例如,我有一个简单的数据库(int id,string text)和listbox。 在每个列表框元素中,我有一个文本块,图像和按钮。
当我添加项目时,我希望每个项目的listobox被称为id。 当我单击按钮时,id将以另一种形式传递,我可以在其中编辑数据库帖子。
page.xaml
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<Image Source="{Binding IconSource}"/>
<StackPanel>
<TextBlock Text="{Binding Text}"/>
<Button Click="Edit_Click1"></Button>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
page.xaml.cs
private void Edit_Click1(object sender, RoutedEventArgs e)
{
int id = 0; // i want to know id of current element of listbox
NavigationService.Navigate(new Uri("/EditTask.xaml?currentID="+id, UriKind.Relative));
}
我怎么能命名列表框的当前项目,然后知道这个元素的名称?抱歉可怕的英语。
答案 0 :(得分:1)
您可以访问listbox.SelectedItem
以获取所选项目:
private void Edit_Click1(object sender, RoutedEventArgs e)
{
int id = (listbox.SelectedItem as MyClass).Id;
NavigationService.Navigate(new Uri("/EditTask.xaml?currentID="+id, UriKind.Relative));
}
答案 1 :(得分:1)
private void Button_Click(object sender, RoutedEventArgs e)
{
var button = ((System.Windows.Controls.Button)sender);
var clickedItem = (DataItem)button.DataContext;
MessageBox.Show(clickedItem.Name);
}
这里我假设DataItem是代表每个项目的类的名称。