当SelectionUnit =“Cell”时,为什么这个触发不起作用

时间:2017-08-29 20:14:42

标签: wpf xaml datagrid

我希望只有在选择DataGrid中的单元格时才启用按钮。

当DataGrid的SelectionUnit设置为“FullRow”时,此行XAML有效:

IsEnabled="{Binding ElementName=dataGrid, Path=SelectedItems.Count}"

当DataGrid的SelectionUnit设置为“Cell”时,它不再正确启用按钮

知道为什么会这样吗?

有没有合适的工作?

由于

2 个答案:

答案 0 :(得分:1)

当DataGrid由Cells选择时,DataGrid的SelectedCells.Count应返回非零值。 Button上的样式中的DataTrigger可以绑定到Value="0",并在{{1}}时禁用该按钮。

答案 1 :(得分:1)

事实证明,DataGrid的SelectedCells.Count属性没有实现INotifyPropertyChanged。

当所选单元格的数量发生变化时,我的绑定无法通知我的数据触发器,并且数据触发值始终为0(即使代码隐藏显示其他情况)...

我最终将数据触发器绑定到跟踪DataGrid的选定行索引的内部属性,并检查它是否等于-1。

           <Button.Style>
                <Style TargetType="Button">
                    <Setter Property="IsEnabled" Value="True" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding SelectedRowIndex}" Value="-1">
                            <Setter Property="IsEnabled" Value="False" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>