目前,我正在玩MVVM,到了我不明白的地步。
我尝试将ViewModel绑定到我的View(MainWindow),如果我在后面的代码中将其绑定,则可以正常工作。
public MainWindow()
{
InitializeComponent();
var vm = new ProductViewModel();
DataContext = vm;
ProductDatagrid.ItemsSource = vm.Products;
}
但是,如果我将所有内容绑定到Xaml中,我都希望获得相同的结果。
遵循我在Xaml中尝试达到的相同结果。
<Window x:Class="PriceListener.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PriceListener"
xmlns:themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
xmlns:svgc="http://sharpvectors.codeplex.com/svgc/"
xmlns:viewModel="clr-namespace:PriceListener.ViewModel"
mc:Ignorable="d"
Title="Preis Beobachter" Height="450" Width="800">
<Window.DataContext>
<viewModel:ProductViewModel/>
</Window.DataContext>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<DataGrid x:Name="ProductDatagrid" CanUserAddRows="False" AlternationCount="2" AlternatingRowBackground="LightGray" ItemsSource="{Binding Products}">
<....
这是视图模型的重要部分
public class ProductViewModel : ViewModelBase
{
public ObservableCollection<Product> Products = new ObservableCollection<Product>();
Visual Studio(2017)将ItemsSource="{Binding Products}">
标记为错误
ObservableCollection属性预期
所以我的问题是:我在做什么错了?