0

也许我误解了如何使用 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();
    }
}

目前,该列始终是可编辑的,转换器似乎什么都不做。有没有人对为什么会发生这种情况有一些想法?

4

2 回答 2

0

DataGridTextColumn 的IsReadOnly属性的值是一个全局值,它将影响所有单元格。单个单元格没有自己的IsReadOnly属性。尝试像这样创建自己的DependencyProperty :http: //blog.spencen.com/2009/04/25/readonly-rows-and-cells-in-a-datagrid.aspx

于 2013-11-05T10:51:05.917 回答
0

除了使用转换器,您还可以使用DataTriggerenable\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>
于 2013-11-04T21:50:26.277 回答