C# 隐藏ListView中的按钮

C# 隐藏ListView中的按钮,c#,wpf,C#,Wpf,我有一个列表视图,每行都有一个按钮。我想隐藏按钮,直到用户选择任何一行 我在ViewModel中使用了: private Visibility _deleteButtonVisibility; public Visibility DeleteButtonVisibility { get { return _deleteButtonVisibility; } set { _deleteButtonVisibility = value; OnPropertyChanged(nameof(Dele

我有一个
列表视图
,每行都有一个
按钮
。我想隐藏按钮,直到用户选择任何一行

我在ViewModel中使用了:

 private Visibility _deleteButtonVisibility;
 public Visibility DeleteButtonVisibility { get { return _deleteButtonVisibility; } set { _deleteButtonVisibility = value; OnPropertyChanged(nameof(DeleteButtonVisibility)); } }
在我的构造函数中

 DeleteBtnVisibility = Visibility.Hidden;
我使用的XAML代码如下

 <GridViewColumn Width="100">
      <GridViewColumn.CellTemplate>
          <DataTemplate >
              <StackPanel HorizontalAlignment="Center">
                  <Button Click="DeleteBand_Click" Visibility="{Binding DeleteBtnVisibility }" Content="Delete" Width="88"></Button>
              </StackPanel>
          </DataTemplate>
      </GridViewColumn.CellTemplate>
      <GridViewColumn.Header>
          <GridViewColumnHeader Tag="Delete" >Delete</GridViewColumnHeader>
      </GridViewColumn.Header>
  </GridViewColumn>
列表视图中绑定不起作用。
如果在
列表视图
之外的任何其他对象上使用相同的绑定,则会隐藏该对象。 我试图隐藏包含
按钮的
,但仍然没有成功。
我不知道为什么绑定不起作用

如果在
列表视图(或其父视图)的视图模型中定义了
deletebtInvisibility
属性,则可以使用
相对资源
对其进行绑定:

<Button Click="DeleteBand_Click"
        Visibility="{Binding DataContext.DeleteBtnVisibility, RelativeSource={RelativeSource AncestorType=ListView}}" 
        Content="Delete" Width="88" />


您是否尝试过使用触发器根据
ListItem.IsSelected
属性设置按钮的可见性?我希望这完全可以在XAML中实现,不需要任何代码。是的,它正在工作。。。非常感谢。但是为什么呢?我不明白背后的原因。您的原始绑定失败,因为
GridView
按钮的
DataContext
ListView
中的对应项,而不是视图模型。感谢您的帮助
<Button Click="DeleteBand_Click"
        Visibility="{Binding DataContext.DeleteBtnVisibility, RelativeSource={RelativeSource AncestorType=ListView}}" 
        Content="Delete" Width="88" />