也许我误解了如何使用IValueConverter或数据绑定(很可能),但我目前正在尝试根据字符串的值设置DataGridTextColumn的IsReadOnly属性。这是XAML:
<DataGridTextColumn Binding="{Binding Path=GroupDescription}" Header="Name"
IsReadOnly="{Binding Current,
Converter={StaticResource currentConverter}}"/>
这是我的转换器:
public class CurrentConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string s = value as string;
if (s == "Current")
{
return false;
}
else
{
return true;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
目前,该列始终可编辑,转换器似乎什么都不做。有没有人想过为什么会发生这种情况?
答案 0 :(得分:0)
您可以使用DataTrigger
启用\ disable DataGridCell
:
<DataGridTextColumn Header="Name" Binding="{Binding GroupDescription}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding Current}" Value="Current">
<Setter Property="TextBlock.IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
答案 1 :(得分:0)
DataGridTextColumn的 IsReadOnly 属性的值是一个影响所有单元格的全局值。单个单元格没有自己的 IsReadOnly 属性。 尝试创建自己的 DependencyProperty ,如下所示:http://blog.spencen.com/2009/04/25/readonly-rows-and-cells-in-a-datagrid.aspx