我的WPF MahApps.Metro DataGrid
上有metroWindow
,其List<files>
绑定了ReadOnly
。
我的文件类的一个属性是IsReadOnly
。一个布尔值,我想将其绑定到DataGridCheckBoxCoumn
复选框的<DataGrid x:Name="dataGrid"
AutoGenerateColumns="False"
CanUserAddRows="False"
ItemsSource="{Binding filesSource}"
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Process}"
ElementStyle="{DynamicResource MetroDataGridCheckBox}"
EditingElementStyle="{DynamicResource MetroDataGridCheckBox}"
IsReadOnly="{Binding ReadOnly}"/>
<DataGridTextColumn Header="Name"
Binding="{Binding Name}"
IsReadOnly="True"/>
<DataGridTextColumn Header="Status"
Binding="{Binding Status}"
IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
属性。
我目前有以下XAML,但这似乎不起作用。
ReadOnly = false
当我运行应用程序时,我可以切换ReadOnly = true
和ReadOnly = false
复选框的状态。我希望只能切换IsReadOnly="True"
。
我对WPF相对较新并且在线学习所有内容(自学成才),所以对于我做错的任何建议都非常感谢:)
修改 如果我手动设置{{1}},则该复选框将变为只读。
答案 0 :(得分:0)
我找到了解决问题的方法 - 感谢MSDN post
我更新了DataGrid
,以便DataGrid.Columns
包含以下DataGridCheckBoxColumn
<DataGridCheckBoxColumn Binding="{Binding Process}"
ElementStyle="{DynamicResource MetroDataGridCheckBox}"
EditingElementStyle="{DynamicResource MetroDataGridCheckBox}">
<DataGridCheckBoxColumn.CellStyle>
<Style TargetType="DataGridCell">
<EventSetter Event="PreviewMouseDown" Handler="DataGridCell_PreviewMouseDown"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
然后在我的XAML代码后面我有以下
private void DataGridCell_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
DataGridCell cell = sender as DataGridCell;
if (cell != null)
{
file item = cell.DataContext as file;
if (item != null && item.ReadOnly)
{
e.Handled = true;
}
}
}