我有一个树视图和一个删除按钮,我希望只有在选择了树视图项时才能启用删除按钮。
我尝试过以下操作但不起作用:
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=tv_cats, Path=Items.IndexOf(SelectedItem)}" Value="-1">
<Setter Property="Button.IsEnabled" Value="false" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
进行测试 - 代码背后 -
tv_cats.Items.IndexOf(tv_cats.SelectedItem).ToString()
如果未选择电视项目,则返回-1,如果是,则返回电视项目索引。
如何在XAML中使用此属性?
答案 0 :(得分:2)
有很多方法可以做到这一点,
通过评估TreeView的selectedItem属性的按钮上的触发器(默认情况下启用Button,当SelectedItem =“{x:Null}”时,Enabled为false
通过转换器(Implements IValueConverter)将button.Enabled绑定到TreeView.SelectedItem的元素属性,该转换器将项存在转换为布尔值。
在MVVM中,您可以在ViewModel上公开一个ButtonIsEnabled属性,它以某种方式检查SelectedItem的值(最简单的方法是将TreeViews Selected Item属性绑定到VIewModel上的另一个属性)并且从中确定启用状态。
答案 1 :(得分:1)
尝试以下方法:
<Button.Style>
<Style >
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=tv_cats, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="Button.IsEnabled" Value="false" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
确保Buttons XAML声明中没有明确的IsEnabled =“false”声明。否则触发器将无效。