gpt4 book ai didi

c# - 交换控制模板

转载 作者:行者123 更新时间:2023-12-03 10:54:20 25 4
gpt4 key购买 nike

我有一个WPF项目(C#,Visual Studio 2010,MVVM),并且有一个问题。

目前,我在ListBox中有一个项目模板。如下所示:

 <ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Thumb Name="myThumb" Template="{StaticResource NodeVisualTemplate}">

<i:Interaction.Triggers>
<i:EventTrigger EventName="DragDelta">
<cmd:EventToCommand Command="{Binding ChatNodeListViewModel.DragDeltaCommand, Source={StaticResource Locator}}" PassEventArgsToCommand="True"/>
</i:EventTrigger>

</i:Interaction.Triggers>
</Thumb>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>

模板是“NodeVisualTemplate”,它是一系列控件(如边框和文本框)。

我不知道该怎么做,以及我想做什么,就是能够根据该项目内的属性将该模板换成另一个。在ListBox中,每个ListBoxItem都有一个数据上下文,该上下文是'ChatNodeViewModel'。我希望在其中具有一个属性,该属性将决定使用哪个模板。

这可能吗?如果是这样,怎么办?

最佳答案

您可以这样使用<DataTemplate.Triggers>:

<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Thumb Name="myThumb" Template="{StaticResource NodeVisualTemplate}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="DragDelta">
<cmd:EventToCommand Command="{Binding ChatNodeListViewModel.DragDeltaCommand, Source={StaticResource Locator}}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Thumb>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding YourProperty}" Value="1">
<Setter TargetName="myThumb" Property="Template" Value="{StaticResource NodeVisualTemplateOne}" />
</DataTrigger>
<DataTrigger Binding="{Binding YourProperty}" Value="2">
<Setter TargetName="myThumb" Property="Template" Value="{StaticResource NodeVisualTemplateTwo}" />
</DataTrigger>
<DataTrigger Binding="{Binding YourProperty}" Value="3">
<Setter TargetName="myThumb" Property="Template" Value="{StaticResource NodeVisualTemplateThree}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>

关于c# - 交换控制模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com