gpt4 book ai didi

wpf - 具有 TemplateSelector 属性的控件

转载 作者:行者123 更新时间:2023-12-02 11:03:21 26 4
gpt4 key购买 nike

现在我有 ListView 并且在一列中有:

<GridViewColumn CellTemplateSelector="{StaticResource messagerEditorTemplateSelector}"/>

一切都很好:单元格填充了基于项目的内容。但现在我想在此单元格中放置 2 个控件:必须根据绑定(bind)选择一个模板,另一个是带有名称的控件,例如 TimeRangeView 。但我不明白它如何实现?所以我必须有这样的代码:

<GridViewColumn>
<DataTemplate>
<StackPanel>
<SomeControlWhichSupportTemplateSelector ... />
<views:TimeRangeView ... />
</StackPanel>
</DataTemplate>
</GridViewColumn>`

我应该使用哪个控件作为模板?我只找到了列表框,但它必须绑定(bind)到集合。当然,我可以像这样绑定(bind):

<ListBox ItemsSource="{Binding Converter=ItemToCollectionConverter}" />

但是看起来不太优雅。也许还有其他方法可以做到这一点?

最佳答案

您可以使用 ContentControl 并设置其 ContentTemplateSelector 属性:

 <GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<ContentControl ContentTemplateSelector="{StaticResource messagerEditorTemplateSelector}" />
<views:TimeRangeView ... />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>

请注意,要使 Binding 在 ContentControl 中工作,您必须将 Content 属性设置为选择器返回的 DataTemplate 的 Bindings 中使用的对象。

这就是选项 1。
您也可以只使用 DataTriggers:

     <GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<ContentControl Content="{Binding MyBoundObject}">
<ContentControl.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=MyBoundObject.ABooleanProperty}" Value="True">
<Setter Property="ContentControl.ContentTemplate" Value="{StaticResource myFirstTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=MyBoundObject.ABooleanProperty}" Value="False">
<Setter Property="ContentControl.ContentTemplate" Value="{StaticResource mySecondTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
<views:TimeRangeView ... />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>

这就是我所做的,它就像一个魅力=)

关于wpf - 具有 TemplateSelector 属性的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8354873/

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