5

DataTemplateの として使用しているがCellTemplateありGridViewColumnます。

のためにこのようなものを書きたいDataTemplate

<DataTemplate
    x:Key="_myTemplate">
    <TextBlock
        Text="{Binding Path={Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GridViewColumn}}, Path=Header}}" />
</DataTemplate>

MyGridViewは にバインドされており、名前が のヘッダーと等しいDataTableの列にバインドしたいと考えています。[それが理にかなっていることを願っています!]DataTableGridViewColumnDataTemplate

残念ながら、これは機能しません。XamlParseException が発生します。「'Binding' 型の 'Path' プロパティに 'Binding' を設定することはできません。'Binding' は、DependenceyObject の DependencyProperty にのみ設定できます。」

どうすればこれを設定できますか?

編集(DanMによるコメントを質問に上げる)

私は基本的にDataTemplate、バインディングが とが接続されDataContextている列によって決定される が必要DataTemplateです。代替手段はありますか?

4

2 に答える 2

0

これだけ欲しくない?

{Binding Path=Header, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GridViewColumn}}}
于 2009-07-22T00:30:35.070 に答える
0

Binding を任意のプロパティだけに割り当てることはできません。プロパティは、型であるBindingか、オブジェクトの依存関係プロパティとして実装されている必要があります。

PathBinding クラスのプロパティは型PropertyPathであり、Binding は Path プロパティを依存関係プロパティとして実装しません。したがって、しようとしている方法でパスを動的にバインドすることはできません。

編集

基本的に、DataTemplate の構成を駆動するバインドされたデータにメタデータを埋め込みたいと考えています。これは、XAML だけでは実行できません。少なくともコードからのサポートが必要です。

ViewModel を使用するのが最善の方法だと思います。これにより、XAML でのバインドが単純になり、この "何を何にバインドするか" の決定が ViewModel のコードにプッシュされます。

于 2009-07-21T07:36:41.123 に答える