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" />