使用ViewModel基于ViewModel属性更改视图
据我所知,在WPF中你可以这样做:
我的问题:有没有办法根据ViewModel中的属性选择View?
像这样的东西:
//If property Selector==1 // If property Selector==2
datatemplate选择器会这样做吗?
这里的教程
这是适用于您的场景的方式:
首先创建一个DataTemplateSelector:
public class IronStageTemplateSelector : DataTemplateSelector { public DataTemplate IronStage1Template { get; set; } public DataTemplate IronStage2Template { get; set; } public object IronStage1Selector { get; set; } public object IronStage2Selector { get; set; } public override DataTemplate SelectTemplate(object selector, DependencyObject container) { if(selector == this.IronStage1Selector) { return IronStage1Template; } return IronStage2Template; } }
我已经扩展了教程,以包含您可以为何时返回每个模板分配的属性。
声明XAML资源
1 2
在这个例子中,我们声明了我们的选择器,以便当我们的属性值为1时,返回template1,否则我们得到模板2。
将控制添加到XAML最后,需要一点点破解 – 您的VM属性需要是IEnumerable …
我希望这有帮助,如果你发现它有用,请标记为答案
编译时是否已知类型的视图模型属性? 如果是这样,您可以直接将控件添加到主(父)视图中,并将datacontext绑定到视图模型属性。
像这样的东西..
如果您有不同的情况,请告诉我。