根据是否在另一个DataGrid中选择了1个元素,我想要启用/禁用两个DataGrid。在WPF中完成此依赖项控制的最简单方法是什么?
答案 0 :(得分:2)
您可以使用触发器:
<DataGrid.Style>
<Style TargetType="DataGrid">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItems.Count,
ElementName=datagrid1}"
Value="1">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Style>
答案 1 :(得分:1)
你可以:
IValueConverter
,也许称为NotEqualToOneBooleanConverter
IsEnabled
从一个DataGrid
绑定到另一个SelectedItems.Count
Converter
上的Binding
设置为NotEqualToOneBooleanConverter
这种方法很不错,因为一旦创建了转换器,它就可以应用于整个XAML以及任何类型和任何属性(不只是DataGrid
或SelectedItems.Count
)。为了使其更加灵活,您可以使用此转换器的更通用版本,可以比较直接从XAML指定的任何两个值(一个来自Binding
,另一个来自Converter
上指定的属性)。
这种方法的缺点 - 它只是XAML,并且很难测试,特别是如果你想要实现的是业务需求而不仅仅是图形效果。
希望这有帮助!
答案 2 :(得分:0)
这是我的快速黑客:
tablesControl.SelectionChanged += (sender, sce) =>
{
var c = tablesControl.SelectedItems.Count;
var orderingPossible = c == 1;
itemsControl.IsEnabled = orderingPossible;
};
答案 3 :(得分:0)
在第一个Grid中,当您单击该单元格时会触发一个事件或Command,在这种情况下,您需要将某个bool属性设置为false,然后将Enabled属性绑定到此bool。如果您使用MVVM,这将非常简单,请查看如何 - http://www.youtube.com/watch?v=tKfpvs7ZIyo