1

データグリッド内の行で、セル/フィールドの隣のセルが使用されている場合、またはその逆の場合、セル/フィールドを無効にしようとしています。言い換えると、ユーザーはどちらか一方しか入力できません。ユーザーが一方のセルに情報を入力する場合は、もう一方を無効にするか、読み取り専用にする必要があります。どうすればこれを達成できますか?どういうわけかコンバーターを作成できますか?同時に、ユーザーは、そのセルに情報を入力するつもりがなかった場合に備えて、そのセルをゼロにすることができるはずです。どんなアドバイスも大歓迎です。

 <DataGridTextColoumn Binding="{Binding Property1}" Header="Property1" />
 <DataGridTextColoumn Binding="{Binding Property2}" Header="Property2" />

-したがって、property1セルに情報を入力すると、property2セルには何も入力できなくなります。property2セルに何かを入力すると、property1セルに何も入力できなくなります。

4

1 に答える 1

1

コンバーターは動作する可能性があります(あなたが言ったように)。このようなもの

<Window 
    ...
    xmlns:c="clr-namespace:*YourConverter'sNamespace*"
    ...
    />
<Window.Resources>
    <c:NotBlankConverter x:Key="NotBlankConverter"/>
</Window.Resources>
...
<DataGridTextColoumn 
    Binding="{Binding Property1}" 
    Header="Property1" 
    IsReadOnly="{Binding Property2, Converter={StaticResource NotBlankConverter}"
    />
...

コンバーターがこのように見える場所

class NotBlankConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return string.IsNullOrEmpty(value);
    }
    ...
}

アップデート

IsReadOnly DPがDataGridTextColumnに対して機能する方法が原因で、これは実際には機能しないようです。完全に機能するソリューションを得るには、これらの質問から何かを実装する必要があります...

.Netv4DataGridTextColumn.IsReadOnlyに障害があるようです

DataGridTextColumn-IsReadonlyをバインドする方法は?

于 2012-08-13T17:06:48.210 に答える