我正在尝试在WPF中的usercontrol
内加载window
。
MainWindow.XAML (为了提高知名度而简化)
<Window x:Class="CoffeeShop.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="700" Width="625">
<Grid>
<ContentControl HorizontalAlignment="Left" Margin="10,10,10,10" Name="orderTable" >
<Grid>
</Grid>
</ContentControl>
</Grid>
</Window>
在代码隐藏中,我正在创建usercontrol
的实例,并在其中设置itemsSource
的{{1}}。将datagrid
加载到我的userControl
页面的contentControl
内。
MainWindow.XAML.cs
xaml
我创建了一个名为 // OrderTable is my `userControl`
OrderTable order = new CoffeeShop.OrderTable();
order.PayButton.Click += OnPayButtonClicked;
order.dataGrid1.ItemsSource = itemsList;
的ViewModel类,OrderViewModel
包含
OrderViewModel.cs
问题是如何将其应用于namespace CoffeeShop.ViewModel
{
class OrderViewModel
{
public Order OrdersViewModelProperty { get; set; }
public OrderViewModel()
{
OrdersViewModelProperty = new Order();
// Adopt the MVVM pattern ???
// Bring the above code in the MainWindow.XAML.cs here ?
}
}
}
模型?提到了很多教程,但仍然觉得有点难以实现。任何指针都非常感激。
修改
MVVM
我按照指针尝试,但这是显示<Window x:Class="dataTemplate.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ContentControl Content= "{Binding Path=MyOrderViewModelProperty}">
<DataTemplate DataType="{x:type local:OrderViewModel}">
<view:UserControl1 />
<DataTemplate/>
</ContentControl>
</Grid>
</Window>
的错误。
答案 0 :(得分:1)
答案很简单:使用DataTemplate,使用Binding。
viewmodel的datatemplate
<DataTemplate DataType="{x:type local:OrderViewModel}">
<view:MyOrderViewWithDataGridAndSoOn />
<DataTemplate/>
将orderviewmodel的实例绑定到contentcontrol
<ContentControl Content="{Binding Path=MyOrderViewModelProperty}"/>
这就是全部。在你的视图中你也应该使用绑定。例如:
<DataGrid ItemsSource="{Binding Path=MyItemsListProperty}"/>