私はを構成するComboBox
を持っていて、そのIsEnabled
プロパティをテンプレートDataGridTemplateColumn
のIsReadOnly
プロパティにバインドする際に問題があります。DataTemplate内に適用されたスタイルを使用してDataGridTemplateColumnにバインドしますか?
私はVSの出力ウィンドウに次のエラーを受けてきました:
'オブジェクト' '' のContentPresenter」
ComboBoxのスタイルには見られない'IsReadOnlyの' プロパティ:
<Style TargetType="{x:Type ComboBox}" x:Key="ProficiencyColumnComboBoxStyle">
<Setter Property="IsEnabled"
Value="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
Path=IsReadOnly, Converter={StaticResource BooleanOppositeConverter}}" />
</Style>
この問題は、私のDataGridColumn
を特定することを目的としたRelativeSource
私が試した:
RelativeSource={RelativeSource TemplatedParent}
RelativeSource AncestorType={x:Type DataGridColumn}
RelativeSource AncestorType={x:Type DataGridTemplateColumn}
をので、私はこのスタイルに他のセッターを追加しようとしました、そして、彼らは有効になりません私はそのスタイルを知っていて、DataTemplate
がコントロールに適用されています。
P.S.
私はそのテンプレート列の親DataGrid
のプロパティにDataTemplate
内の別のComboBox
をバインドするために、この同じ技術を使用しました。 違いはここで私はコンバータを使用しており、グリッドの代わりにという列のプロパティにバインドしようとしています。しかし、上記のスタイルからコンバーターを削除しても、バインドは行われません。
そのような列にはバインドできません。論理的または視覚的なツリー内のオブジェクトではなく、単にデータであるため、RelativeSourceは失敗します。 [バインディングをデバッグする]必要があります(http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/debugging-data-bindings-in-a-wpf-or-silverlight-application.aspx)確かにバインディングエラーが発生します。 –
@ H.B。それは素晴らしい記事です、頭の中でハンクス!私の出力ウィンドウに見つかったバインディングエラーが問題にあります...あなたの回避策や代替方法がわかっている場合は、回答を投稿してください。 – Rob
これはTemplatedParentのエラーです。列へのバインディングでは、ソースが見つからないことを確認する必要があります。とにかく、通常は '' x:Reference'(http://msdn.microsoft.com/en-us/library/ee795380.aspx)と組み合わせて 'Binding.Source'を使用してDG列にのみバインドすることができます。周期的な依存関係に複雑になる。有益な答えは –