我绑定到通用DataTable
,其中某些行可能包含问题,不应修改。通过IsEnabled
中的DataGrid_LoadingRow
或Trigger
中Binding
的{{1}}进行简单设置,似乎可以轻松实现这一目标。
但是,我还有一个“Info”-Column,其中有一个Button,以便用户可以查看问题...将IsEnabled设置为false也会禁用我的按钮...
我已经尝试过:XAML
但这没有效果。
我怎么能做到这一点?通过遍历IsManipulationEnabled
的{{1}}并为除第一个之外的所有单元格设置VisualTree
,这是唯一的方法吗?
答案 0 :(得分:1)
对于第一列,请使用此Button
,
public class EnabledButton : Button
{
static EnabledButton()
{
UIElement.IsEnabledProperty.OverrideMetadata(typeof(EnabledButton),
new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.None,
UIElement.IsEnabledProperty.DefaultMetadata.PropertyChangedCallback,
new CoerceValueCallback(IsEnabledCoerceCallback)));
}
private static object IsEnabledCoerceCallback(DependencyObject d, object baseValue)
{
return (bool)baseValue;
}
}
用法:
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<local:EnabledButton IsEnabled="True" Content="Modify"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
...
</DataGrid.Columns>
这会覆盖DataGridCell.IsEnabled
属性的继承。