- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
现在我有 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/
我收到此错误: Error 1 The name "TemplateSelector" does not exist in the namespace "using:MyApps" 但我不知道为什么,
现在我有 ListView 并且在一列中有: 一切都很好:单元格填充了基于项目的内容。但现在我想在此单元格中放置 2 个控件:必须根据绑定(bind)选择一个模板,另一个是带有名称的控件,例如 Ti
我有一个对象编辑器 View ,它显示简单的数据和值的解释,它是使用 TemplateSelector 模板化的。如果原始值得到更新,解释值也会更新,反之亦然。在一个简单的 DataTemplate
作为序言,这个问题来自扩展 this answer关于如何使所选项目看起来不同于 ComboBox 中的下拉项目。 我正在尝试让我的自定义选定项使用 ComboBox 的 Tag 属性中的信息。因为我
我需要帮助,因为我不明白为什么来自数据模板的控件不继承窗口资源中定义的样式。可能有解决方法吗? 如果有人能给我一个解决方案,我将不胜感激,因为我花了很多时间才找到一些东西。 特此是我的例子。例如水平模
我是一名优秀的程序员,十分优秀!