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 に答える