我想从父视图xaml。
为子控件设置视图模型的属性所以我希望父xaml是这样的:
<UserControl x:Class="MainUserControl"
...>
<Grid...>
<local:ChildDetailView x:Name="childView1" ChildVMProperty="ValueOptions.Option1"/>
<local:ChildDetailView x:Name="childView2" ChildVMProperty="ValueOptions.Option2"/>
</Grid>
</UserControl>
其中ChildVMProperty是ChildDetailViewModel上的属性(如果它是相关的,则该属性采用ValueOptions类型的枚举)。
请注意,ViewModel正在后面的代码中设置(不在xaml中),因为实际上我在ViewModels中使用DI来注入prism事件聚合器。
当我尝试做这样的事情时,xaml会抱怨,因为它显然对ChildViewModel类一无所知。要做到这一点的正确语法是什么,或者如果不是那么直截了当,我有哪些选择来解决这个问题?
答案 0 :(得分:0)
您需要先创建ChildDetailView.xaml
文件。我们假设您将此文件放在命名空间MyApp.Controls
中,那么上面的XAML就像
<UserControl x:Class="MainUserControl"
xmlns:local="clr-namespace:MyApp.Controls" >
<Grid ...>
<local:ChildDetailView x:Name="childView1" ChildVMProperty="ValueOptions.Option1"/>
<local:ChildDetailView x:Name="childView2" ChildVMProperty="ValueOptions.Option2"/>
</Grid>
</UserControl>
您必须确保DependencyProperty
上也定义了ChildVMProperty
(DP)UserControl
- 但这是另一个问题,并且该特定主题有很多答案。要为视图添加DP,您可能需要对要尝试定位的特定控件进行子类化。
将DP用于属性的另一种替代方法是使用转换器。
我希望这会有所帮助。