0

我有一个树视图并单击每个树节点,树节点的详细信息将显示在树视图的右侧。每个树节点都有自己的视图模型。下面的代码显示了我如何显示细节:

当 Value="can be specified at design time" (我有 11 个)时,一切都很好。但是我有一个树节点的子节点具有不同的名称(请参见下面的代码值 =“无法在设计时指定”),因为它们是从数据库中表的两列动态检索的,并且在此处列出 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 回答