1

bool値をxamdatagridにバインドすると、列は自動的にxamcheckeditorを使用してデータを表示します。外側のボタンを使用してチェックボックス列のalloweditを制御したいのですが、alloweditプロパティを変更すると、列のチェックボックスが無効化/有効化スタイルを適用します(灰色になります)リソースディクショナリで、xamcheckeditorのスタイルを記述します:

<ControlTemplate.Triggers>
    <Trigger Property="IsReadOnly" Value="True">
        <Setter TargetName="PART_FocusSite" Property ="IsEnabled" Value="False" />
     </Trigger>
</ControlTemplate.Triggers>

したがって、フィールドが編集可能でない場合、チェックボックスは無効として表示されます。

列のalloweditを制御するボタンもあります。ボタンをクリックすると、次のように呼び出されます。

grid.FieldsLayouts[0].Fields["Enabled"].Settings.AllowEdit = true/false

ただし、有効化/無効化アクションは自動的に適用されません。フィルターをクリックしてグリッドを更新し、適用する必要があります...

ボタンをクリックして提出許可を設定したら、実装する方法を教えてください。チェックボックスが自動的に有効になります。

ありがとう!

Enzhou

4

1 に答える 1

3

XamCheckEditor が属するフィールドの AllowEdit が false/true に設定されているときに XamCheckEditor を無効/有効にするだけの場合は、AllowEdit に直接アタッチされたバインディングを使用してスタイルを作成するだけです。

<local:NullableBooleanConverter x:Key="converter"/>

<Style TargetType="{x:Type igEditors:XamCheckEditor}" >
    <Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type igDP:CellValuePresenter}},
        Path=Field.Settings.AllowEdit, Converter={StaticResource converter}}"/>
</Style>

XamCheckEditor は Field の各セル内にあるため、CellValuePresenter 内にあることを意味します。RelativeSource バインディングを使用してアクセスし、そのプロパティにアクセスできます。そのプロパティの 1 つは、それが属するフィールドです。そのため、AllowEdit に直接バインドできます。

現在、AllowEdit は null 許容ブール値 (bool?) であり、デフォルトで null に設定されているため、データが XamCheckEditor に正しく渡されるようにコンバーターを使用する必要があります。

public class NullableBooleanConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        // If value is null then we really mean true.
        if (value == null)
            return true;

        // value is not null so it's either true or false.
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

ここで行う必要があるのは、最初に行っているように AllowEdit プロパティを設定することだけで、XamCheckEditor が自動的に更新されます。

于 2012-10-26T21:24:30.947 に答える