我有一个UserControl,他将DataContext设置为ViewModel的一个实例(使用MVVM)。但是,我在UserControl中有控件需要绑定到仅与视图相关的属性(这就是我将它们放在代码后面的原因)。我不确定如何在xaml中正确绑定它:
注意:SelectedOrderType
是View-Model上的属性,OrderTypes
是UserControl本身的属性。
<UserControl x:Class="MyNamespace.OrderControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="OrderUserControl">
<Grid>
...
<ComboBox ItemsSource="{Binding Path=OrderTypes, ElementName=OrderUserControl}"
SelectedValue="{Binding Path=SelectedOrderType}"
SelectedValuePath="OrderTypeCode"
DisplayMemberPath="OrderTypeName" />
</Grid>
</UserControl>
public partial class OrderControl : UserControl
{
public OrderControl()
{
InitializeComponent();
OrderTypes = ...;
}
public IReadOnlyCollection<OrderTypeInfo> OrderTypes { get; private set; }
}
另外,我知道我可以简单地在View-Model上创建一个属性,我知道有些人会认为这是正确的地方......但我真的很想知道我怎么做如果不是针对这种情况,可以做我试图做的事情,也许是将来的其他情景?
答案 0 :(得分:0)
我可能错了,但是你不需要为你的用户控件创建一个依赖属性&#34; SelectedOrderType&#34;并将View Model绑定到该属性,而不是直接从用户控件绑定到视图模型。
那样你的UserControl不依赖于视图模型?
编辑:
我认为您可以按照它的方式进行设置,但SelectedOrderType的绑定需要类似于{Binding Path = DataContext.SelectedOrderType,ElementName = OrderUserControl}