- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用带有 ModelView-First 方法的 MVVM 模式。到目前为止,这工作正常。
现在我有一个用户控件( View ),它应该根据位于我的 ViewModel 中的属性显示各种内容。
首先,我尝试使用 DataTemplates 和 DataTemplateSelector ( See this tutorial ) 来解决问题,效果很好。但我对解决方案不满意,因为那时我有一个类(被覆盖的 DataTemplateSelector),它没有连接到 ViewModel 并且无法从模型中填充。
所以我尝试创建一个自己的 TemplateSelector,它使用 ViewModel 中的属性。不幸的是,DataTrigger 没有触发。从 CheckBox 到 ViewModel 的绑定(bind)也可以工作,但不能在 DataTrigger 上工作(即使设计者也找不到此路径)。
好的,请看代码:
<UserControl.Resources>
<!--Define Template which is displayed for Users-->
<DataTemplate x:Key="templateUser">
<Image
Name="logo"
Source="blanked out"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</DataTemplate>
<!--Define Template which is displayed for Administrators-->
<DataTemplate x:Key="templateAdmin">
<TextBlock Background="Yellow" Margin="3" Text="YEAH, I'm an Administrator" />
</DataTemplate>
<!--My own TemplateSelectpr-->
<DataTemplate x:Key="myTemplateSelector">
<ContentControl x:Name="DynamicContent" ContentTemplate="{StaticResource templateUser}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsAdministrator}" Value="true">
<Setter TargetName="DynamicContent" Property="ContentTemplate" Value="{StaticResource templateAdmin}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ContentPresenter ContentTemplate="{StaticResource myTemplateSelector}"/>
</Grid>
最佳答案
越简单越好:使用单个模板,其中包含您需要显示的所有控件。然后使用绑定(bind)到您的属性来切换它们的可见性:
<UserControl.Resources>
<DataTemplate x:Key="myTemplate">
<Grid>
<Grid Visibility="{Binding IsAdministrator, Converter={StaticResource BooleanToVisibilityConverter}}">
<!-- Content for admin -->
</Grid>
<Grid Visibility="{Binding IsAdministrator, Converter={StaticResource NotBooleanToVisibilityConverter}}">
<!-- Content for user -->
</Grid>
</Grid>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ContentPresenter ContentTemplate="{StaticResource myTemplate}"/>
</Grid>
关于mvvm - 自己的 DataTemplateSelector MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11860251/
在两个之间切换 ItemTemplates在我的 ListView基于当前的 Item 类型,我实现了一个 DataTemplateSelector .我是通过 Binding 添加的到 ListVi
我有一个应用于 DataGridTemplateColumn 的 DataTemplateSelector。它正确地为我提供了一个 DataTemplate,该模板根据我的 DataRow(在其他列中
使用 dataTemplateSelector 根据枚举值为我的 View 模型选择正确的数据模板时遇到一点问题。 这是一个重现问题的演示。 我有一个由我的 viewModels 使用的模型层次结构
我有 ContentPresenter 和 DataTemplateSelector: ... public override DataTemplate SelectTemplate(
我正在使用带有 ModelView-First 方法的 MVVM 模式。到目前为止,这工作正常。 现在我有一个用户控件( View ),它应该根据位于我的 ViewModel 中的属性显示各种内容。
我在列表框中使用 DatatemplateSelector。 我的数据没有按需拉伸(stretch)(灰色圆圈必须在列表框的右侧)
我的应用中需要一个数据模板选择器。我找到了 this blog在 7.0 上效果很好。将我的项目升级到 7.1 后,设置模板时出现“未指定错误”。我试着把他们在博客上发布的示例项目升级到芒果,它仍然有
我正在使用 LongListSelector 来实现我的项目的列表或网格显示。为此,我创建了一个 DataTemplateSelector 并在运行时更改了 LayoutMode 属性。这是可行的,但
这是我拥有的 XAML: 这是我的 ListTemplateSelector 类: public class ListTemplateSelector : DataTemplateSelector
我将 ContentControl.DataTemplateSelector 设置为我想要的。 我希望根据命令或其他方式调用 ContentControl 以通过 xaml 或代码从选择器中重新选择模
我想设计一个 DataTemplateSelector,它将给定值与传入的参数进行比较,并在值优劣时选择正确的模板 我带来了以下内容: class InferiorSuperiorTemplateSe
如何更改 UWP 项目中 ListView 的 SelectedItem 的 DataTemplate?我正在尝试使用 DataTemplateSelector,但问题是 SelectTemplate
走出我的 .net 踩踏地,似乎无法弄清楚是否有与您在 .net 中使用 DataTemplateSelector 的等效项,但用于 ionic 驱动的 html5 和 angularjs 元素。有人
我正在制作一个自定义的水平滚动 ListView 类型控件,我遇到了一个我无法解释的问题,而且我不能 100% 确定这个问题是否与我的代码有关,除非我误会了什么。 我已将问题提炼成最简单的形式,可在
我知道有这个帖子:How to find a resource in a UserControl from a DataTemplateSelector class in WPF? 问同样的问题。 但
我有一个使用 StackPanel 的 ItemsControl 来显示项目列表。 我希望每行都显示一个标签,但标签左侧的内容由 DataTemplateSelector 定义。我不想为 Templa
我正在尝试构建一个 ContentControl -派生控件(我们称之为 MyContentControl ),它将有其 ControlTemplate由 DataTemplateSelector 的
我有两个列表框,默认的和自定义的。一个正确使用 DataTemplateSelector 而另一个只使用默认的 DataTemplates 从不调用选择器; //shows correctly //
我有一个动态数据透视项模板,如下所列:
我有一个简单的问题。我的 Xamarin Forms 页面上定义了两个数据模板。我想在按下按钮时将一个换成另一个。我知道使用 ListView 我可以使用 ItemTemplate 并绑定(bind)
我是一名优秀的程序员,十分优秀!