0

アイテムを表示するにTelerik:RadGridViewは、通常、 と を使用DataContext="{Binding [someViewModel]}"ItemSource="{Binding objectList, Mode=TwoWay}"ます。

私のコラムでは、にアクセスしobjectfieldます。全体像は以下のようになります。

<telerik:RadGridView DataContext="{Binding [someViewModel]}" 
     ItemSource="{Binding objectList, Mode=TwoWay}">

    <telerik:RadGridView.Columns>
            <telerik:GridViewDataColumn>
                <telerik:GridViewDataColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox IsEnabled="{Binding enabledVar}" 
                            IsChecked="{Binding isChecked, Mode=Twoway}"
                    </DataTemplate>
                </telerik:GridViewDataColumn.CellTemplate>

            </telerik:GridViewDataColumn>  
    </telerik:RadGridView.Columns>

</telerik:RadGridView>

に 10 個のアイテムがあると想像してくださいobjectList。の各項目には、チェックボックス プロパティを操作するためobjectListの変数があります。isCheckedIsChecked

enabledVar同じビューモデルに、10 個のチェックボックス プロパティを制御する別の変数がありIsEnabledます。enabledVarの一部ではありobjectListませんが、値を取得できませんでした。このような場合の対処法を教えてください。

アップデート:

私はいくつかの新しい方向性を見つけましたが、それが役立つかどうかはわかりません.

<CheckBox IsEnabled="{Binding enabledVar,
     RelativeSource={RelativeSource Mode=FindAncestor, 
     AncestorType=telerik:RadGridView}}"

もちろん、それでも失敗しました。

どんな助けでも大歓迎です。

4

2 に答える 2

1

Ancestor を使用している場合は、DataContext にバインドする必要があります

<CheckBox IsEnabled="{Binding Path=DataContext.enabledVar,
     RelativeSource={RelativeSource Mode=FindAncestor, 
     AncestorType=telerik:RadGridView}}"

別のアプローチは、要素バインディング セット名を使用することです。

<telerik:RadGridView x:Name="myGrid" ...

そして、セルテンプレートでそれにバインドします

<CheckBox IsEnabled="{Binding Path=DataContext.enabledVar, ElementName=myGrid}"

お役に立てれば。

于 2014-02-14T09:27:24.883 に答える
0

GridViewDataColumn はビジュアル ツリーの一部ではなく、DataContext にアクセスできないため、Update で提案されているコードは機能しません。

ここで提案されているように、プロキシ データ バインディングを利用する必要があります。「wpf proxy databinding」を検索すると、さらに多くの例を取得できます。

于 2014-02-14T09:31:50.050 に答える