Wpf 无法在设计时指定DataTrigger值属性,有何替代方法

Wpf 无法在设计时指定DataTrigger值属性,有何替代方法,wpf,treeview,datatrigger,Wpf,Treeview,Datatrigger,我有一个树视图,点击每个树节点,树节点的细节将显示在树视图的右侧。每个treenode都有自己的viewmodel。下面的代码显示了我如何显示详细信息: 当Value=“可在设计时间指定”(我有11个)时,一切正常。但是我有一个treenode,它的子节点具有不同的名称(请参见下面的代码Value=“不能在设计时指定”),因为它们是从数据库中表的两列中动态检索的,在这里列出4000个或更多的子节点是不现实的 Name=“J”+tablename.Label+”+tablename.SubLabe

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

当Value=“可在设计时间指定”(我有11个)时,一切正常。但是我有一个treenode,它的子节点具有不同的名称(请参见下面的代码Value=“不能在设计时指定”),因为它们是从数据库中表的两列中动态检索的,在这里列出4000个或更多的子节点是不现实的

Name=“J”+tablename.Label+”+tablename.SubLabel

<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属性不支持绑定表达式


提前谢谢你

当触发器基于多个动态值时,请使用

在本例中,您将使用绑定向转换器传递您的名称和运行时值,并返回类似于true/false的值

<DataTrigger Value="True">
    <DataTrigger.Binding>
        <MultiBinding Converter="{StaticResource IsNameEqualValueConverter}">
            <Binding Path="Name" />
            <Binding Path="PathToRuntimeValue" />
        </MultiBinding>
    </DataTrigger.Binding>
</DataTrigger>

谢谢Rachel,我去掉了datatrigger,改为为为ContentTemplate编写了一个值转换器类,从而使它工作起来。