ItemTemplate 按钮应 select 正确的项目
ItemTemplate button shall select the correct item
我有一个 ListView 和一个自己的 ItemTemplate:
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Content="Delete Article"
Click="Button_Click"/>
<TextBlock Text="{Binding ArticleID}"/>
<TextBlock Text="{Binding ArticleName}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
如果用户单击该按钮,该项目应从列表视图中删除。我的问题是单击按钮不会 select 它行中的项目。
因此,您可以 select 列表视图中的第二个项目并单击第一个项目的 'delete button',第二个项目将从列表视图中删除,而不是我期望的第一个项目。
所以一种方法可能是:每次点击 'delete button' 都会 select 创建按钮的项目,但我不知道如何处理。
也许有更好的方法来解决这个问题...
提前致谢!
您可以选取 DataContext,然后从源中删除该行
需要使用 ObservableCollection 来通知 UI
private void ButtonDelete_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
Fld fld = (Fld)btn.DataContext;
Folders.Remove(fld);
}
一种非常简单的方法是将按钮的 Tag
属性 绑定到当前项目
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Tag="{Binding}"
Content="Delete Article" Click="Button_Click"/>
<TextBlock Text="{Binding ArticleID}"/>
<TextBlock Text="{Binding ArticleName}"/>
</StackPanel>
</DataTemplate>
然后在点击处理程序中使用它来删除项目:
private void Button_Click(object sender, RoutedEventArgs e)
{
var article = (Article)((Button)sender).Tag;
Articles.Remove(article);
}
假设 Articles
是您的文章项 class 的 ObservableCollection。
我有一个 ListView 和一个自己的 ItemTemplate:
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Content="Delete Article"
Click="Button_Click"/>
<TextBlock Text="{Binding ArticleID}"/>
<TextBlock Text="{Binding ArticleName}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
如果用户单击该按钮,该项目应从列表视图中删除。我的问题是单击按钮不会 select 它行中的项目。
因此,您可以 select 列表视图中的第二个项目并单击第一个项目的 'delete button',第二个项目将从列表视图中删除,而不是我期望的第一个项目。
所以一种方法可能是:每次点击 'delete button' 都会 select 创建按钮的项目,但我不知道如何处理。
也许有更好的方法来解决这个问题...
提前致谢!
您可以选取 DataContext,然后从源中删除该行
需要使用 ObservableCollection 来通知 UI
private void ButtonDelete_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
Fld fld = (Fld)btn.DataContext;
Folders.Remove(fld);
}
一种非常简单的方法是将按钮的 Tag
属性 绑定到当前项目
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Tag="{Binding}"
Content="Delete Article" Click="Button_Click"/>
<TextBlock Text="{Binding ArticleID}"/>
<TextBlock Text="{Binding ArticleName}"/>
</StackPanel>
</DataTemplate>
然后在点击处理程序中使用它来删除项目:
private void Button_Click(object sender, RoutedEventArgs e)
{
var article = (Article)((Button)sender).Tag;
Articles.Remove(article);
}
假设 Articles
是您的文章项 class 的 ObservableCollection。