我对这个问题有些摸不着头脑,已经查找了一些资料,但没有找到相关的内容。我的目标是在当前窗口上创建一个ItemsControl,所以当用户点击窗口上的“添加产品”按钮时,它会以水平方式将一个UserControl添加到屏幕上。
首先,我正在使用MVVM模式,并且我有一个PricingViewModel,它是我的主窗口的ViewModel。我有第二个视图模型,名为ComparisonViewModel,它是我想要在用户每次点击PricingView上的“添加产品”按钮时显示的UserControl的ViewModel。进入我的代码,我有一个声明的ObservableCollection和我的AddComparison方法。集合在VM的构造函数中实例化。
public ObservableCollection<ComparisonViewModel> Products { get { return _products; } }
public void AddComparison()
{
var products = IoC.Get<ComparisonViewModel>();
Products.Add(products);
}
接下来,在 PricingView 中,我使用 ItemsControl 绑定到 PricingViewModel 中的集合:
<ItemsControl ItemsSource="{Binding Path=Products}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" VerticalAlignment="Stretch"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
当我运行它并点击添加后,它只显示集合名称。如何在用户点击“添加比较”时实际弹出新的“比较用户控件”?非常感谢您提前的帮助!
DataType
而不是TargetType
。 - JayComparisonView
。在DataTemplate
中,使用<namespace:ComparisonView…>
代替<UserControl …>
。 - Jay