0

ツリービューがあり、各ツリーノードをクリックすると、ツリーノードの詳細がツリービューの右側に表示されます。各ツリーノードには独自のビューモデルがあります。以下のコードは、詳細を表示する方法を示しています。

Value="設計時に指定可能" の場合 (私は 11 個あります)、すべて問題ありません。しかし、私は1つのツリーノードに異なる名前の子を持っています(以下のコードValue = "設計時に指定できません"を参照)。これは、データベース内のテーブルの2つの列から動的に取得され、4000以上の子をここにリストするためです。現実的ではありません。

名前 = "J" + テーブル名.ラベル + "." + テーブル名.サブラベル;

<ContentControl Name="DetailContentControl" 
Content="{Binding ElementName=myTreeview, Path=SelectedItem, Mode=OneWay}">
   <ContentControl.ContentTemplate>
<DataTemplate>
    <ContentControl Name="CC" Content="{Binding }" />
        <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding Path=Name}" Value="DXHeader">
          <Setter TargetName="CC" Property="ContentTemplate" Value="{StaticResource  DXHeaderDetailsTemplate }"/>
      </DataTrigger>
        <DataTrigger Binding="{Binding Path=Name}"  Value="Don't know at designed time">
    <Setter TargetName="CC" Property="ContentTemplate" Value="{StaticResource MyDetailsTemplate }"/>
        </DataTrigger>                      
     .....
       </DataTemplate.Triggers>
</DataTemplate>
    </ContentControl.ContentTemplate>
</ContentControl>

このようなことができれば、問題はありません。

ただし、DataTrigger.Value プロパティは Binding 式をサポートしていません。

前もって感謝します!

4

1 に答える 1

1

トリガーが複数の動的値に基づいている場合は、MultiValueConverterを使用してください

この場合、バインディングを使用してコンバーターに名前と実行時の値を渡し、true/false値のようなものを返します。

<DataTrigger Value="True">
    <DataTrigger.Binding>
        <MultiBinding Converter="{StaticResource IsNameEqualValueConverter}">
            <Binding Path="Name" />
            <Binding Path="PathToRuntimeValue" />
        </MultiBinding>
    </DataTrigger.Binding>
</DataTrigger>
于 2012-06-21T16:07:15.440 に答える