我有一个相当经典的用户界面情况 - 两个名为SelectedItems
和AvailableItems
的列表框 - 想法是您已选择的项目位于SelectedItems
,而可用的项目添加到SelectedItems
(即每个尚未存在的项目)都存在AvailableItems
。
此外,我有<
和>
按钮将当前选择从一个列表移动到另一个列表(除了双击,它还可以正常工作)。
在WPF中是否可以设置样式/触发器来启用或禁用移动按钮,具体取决于ListBox中选择的任何内容? SelectedItems
位于左侧,因此<
按钮会将选定的AvailableItems
移至该列表。但是,如果没有选择任何项目(AvailableItems.SelectedIndex == -1
),我希望禁用此按钮(IsEnabled == false
) - 另一种方法是禁用其他列表/按钮。
这可以直接在XAML中完成,还是需要在代码隐藏中创建复杂的逻辑来处理它?</ p>
答案 0 :(得分:72)
少代码解决方案:
<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />
如果count为0,似乎映射为false,则&gt; 0到真。
答案 1 :(得分:44)
这是你的解决方案。
<Button Name="btn1" >click me
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger
Binding ="{Binding ElementName=list1, Path=SelectedIndex}"
Value="-1">
<Setter Property="Button.IsEnabled" Value="false"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>