Take data from clicked ListView
I have XAML file like this
<UserControl x:Class="UISkripsi3.Sidebar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:UISkripsi3="clr-namespace:UISkripsi3"
xmlns:local="clr-namespace:UISkripsi3">
<UserControl.Template>
<ControlTemplate TargetType="{x:Type UISkripsi3:Sidebar}">
<DataTemplate x:Key="StatusAndOther" DataType="{x:Type local:NewsFeedResources}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="10">
<Image x:Name="ProfilePicture" Source="{Binding Path=ProfilePict}" Stretch="Fill" Width="80" Height="80" VerticalAlignment="Top"></Image>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Text="{Binding Path=UserName}" Style="{StaticResource UserNameStyle}" VerticalAlignment="Top"/>
<TextBlock Text="{Binding Path=Message}" Foreground="White" TextWrapping="Wrap" Width="400" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<StackPanel Orientation="Horizontal">
<Image x:Name="Icon" Source="{Bin开发者_如何学Goding Path=icon}" Width="10" Height="10"></Image>
<TextBlock Text=" via " Foreground="White"></TextBlock>
<TextBlock Text="{Binding Path=attribution}" Foreground="White"></TextBlock>
<StackPanel Orientation="Vertical">
<Button x:Name="LikeButton" VerticalAlignment="Top" Content="like" IsEnabled="{Binding canLike}" ToolTip="Like" Click="LikeButtonClick">
<Button.Style>
<Style BasedOn="{StaticResource LikeButtonStyle}" TargetType="Button">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding hasLiked}" Value="True">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button x:Name="RemoveLikeButton" VerticalAlignment="Center" Content="remove like" IsEnabled="{Binding hasLiked}" ToolTip="Remove Like">
<Button.Style>
<Style BasedOn="{StaticResource RemoveLikeButtonStyle}" TargetType="Button">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding hasLiked}" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical">
<ListView Name="NewsFeedList" Width="700" Height="500" Margin="10"
ItemsSource="{Binding Source={x:Static local:Sidebar.newsFeedResourcesCoba2}}"
Background="Black"
ItemTemplateSelector="{StaticResource myDataTemplateSelector}" Focusable="False">
</ListView>
</StackPanel>
</Grid>
</DataTemplate>
</ControlTemplate>
</UserControlTemplate>
</UserControl>
Then, I have class like this
public class NewsFeedResources : UserControl
{
public string UserName { get; set; }
public string Id { get; set; }
public string Message { get; set; }
public string IdPost { get; set; }
public byte[] ProfilePict { get; set; }
public string DestinationName { get; set; }
public string to { get; set; }
public byte[] UploadedPict { get; set; }
public byte[] Attachment { get; set; }
public string Description { get; set; }
public string type { get; set; }
public string nameWallPost { get; set; }
public string captionWallPost { get; set; }
public string link { get; set; }
public byte[] icon { get; set; }
public string attribution { get; set; }
public bool canLike { get; set; }
public bool hasLiked { get; set; }
}
Lets add some data
public static ObservableCollection < NewsFeedResources > _newsfeedcoba2 = new ObservableCollection < NewsFeedResources >();
public static ObservableCollection < NewsFeedResources > newsFeedResourcesCoba2
{ get { return _newsfeedcoba2; } }
_newsfeedcoba2.Add(new NewsFeedResources
{
UserName = "abc", Id = "123", Message = "Hello World", IdPost = "12345-12345", ProfilePict = data, DestinationName = "Boulevard", to = "John", UploadedPict = data2, Attachment = data2, Description = "Bored", type = tipeStatus, nameWallPost = nameWallPost, captionWallPost = caption, link = linknya, icon = data3, attribution = attributenya, canLike = blumLike, hasLiked = sdhLike
}
);
Code above is just some part of my program and it works fine. I want to ask about the ListView (x:name="NewsFeedList"). I want that if I click the LikeButton, a messagebox appeared and display the IdPost. I don't know how to pass the value from xaml to xaml.cs. Can anyone help me?
private void LikeButtonClick(object sender, RoutedEventArgs e) {
Button btn = (Button)sender;
NewsFeedResources obj = btn.DataContext as NewsFeedResources;
if(null != obj){
MessageBox.Show(obj.IdPost);
}
}
精彩评论