Tag: mvvm datatemplate

WPF中的DataTemplates

我对WPF中的数据模板有一般性问题。 假设我有一个名为“问题”的抽象类,以及各种子类,如“MathQuestion”,“GeographyQuestion”等。在某些情况下,使用“问题”数据模板将问题呈现为“问题”已经足够了,但是假设我有一个不同子类的随机问题对象列表,我想反过来显示它们。 我想使用他们的特定数据模板而不是他们的通用问题数据模板向用户显示它们,但由于我不知道在设计时,无论如何都告诉WPF,“嘿,这是一个Quesitons列表,但是使用reflection来确定他们的具体类型并使用那个数据模板?“ 到目前为止我所想到的:我认为除了我的问题集之外,我可以使用reflection创建另一个特定类型的集合,并以某种方式将其绑定到“blah”,然后我会得到所需的效果,但是你只能绑定到WPF中的DependencyProperties,所以我不确定我绑定到什么。 我真的不喜欢这个想法,我的直觉告诉我有一个更优雅的方法来解决这个问题。 我不是在这里寻找具体的代码,只是一个完成我想要做的事情的一般策略。 另外,如果有帮助的话,我大部分时间都在使用MVVM。 谢谢

如何使用DataTemplate + Triggers在视图之间切换

我有一个要求,即用户可以切换到以树或数据网格或FlowChart中的文本的forms查看分层数据。 用户可以通过单击切换按钮来执行此操作,切换按钮说明:切换模式。 我希望以这样的方式完成所有这些,只有在ViewModel的所有三种情况下都可以在View中处理它。 如何根据Trigger将View应用于我的ViewModel。

根据类型选择数据模板

我已经宣布了以下类型: public interface ITest { } public class ClassOne : ITest { } public class ClassTwo : ITest { } 在我的viewmodel中,我正在声明并初始化以下集合: public class ViewModel { public ObservableCollection Coll { get; set; } = new ObservableCollection { new ClassOne(), new ClassTwo() }; } 在我看来,我正在声明以下ItemsControl 我希望看到的是一个红色方块,后面是一个蓝色方块,而我所看到的是以下内容: 我究竟做错了什么?

停止TabControl重新创建其子项

我有一个视图模型的IList ,它绑定到TabControl 。 此IList不会在TabControl的生命周期内更改。 每个viewmodel都有一个DataTemplate ,它在ResourceDictionary指定。 DataTemplate中指定的每个视图都是资源密集型的,足以创建我只想创建每个视图一次,但是当我切换选项卡时,会调用相关视图的构造函数。 根据我的阅读,这是TabControl的预期行为,但我不清楚调用构造函数的机制是什么。 我已经看过一个使用UserControl的类似问题,但是那里提供的解决方案需要我绑定到不受欢迎的视图。