0

我正在使用 C# 编写一个 WPF 程序并以 .Net 4.0 为目标。我正在尝试遵循 MVVM 模式,其中我的视图(代码隐藏)具有最少甚至没有代码。

我有一个List<MyRecord>我想使用DataGrid. 在我的 XAML 中,我有以下内容:

<DataGrid x:Name="RecordGrid" ...>
   <DataGrid.Columns>
      <DataGridTextColumn Binding="{Binding RecId}" Header="Record ID"/>
      <DataGridTextColumn Binding="{Binding Name}" Header="Name"/>
   </DataGrid.Columns>
</DataGrid>

剩下的就是将此网格绑定到数据集合。

当我将它绑定到代码隐藏文件中时,它可以正常工作:

RecordGrid.ItemsSource = MyRecordList;

但是,我更愿意在 XAML 中以声明方式绑定它。所以我尝试了这个:

<DataGrid x:Name="RecordGrid" ItemsSource="{Binding MyRecordList}" ...>

但它默默地不起作用。加载数据网格时没有 XAML 绑定错误消息。我在 MyRecordList 的get方法上设置了一个断点,只要 ItemsSource 以声明方式定义,它就不会被调用。

如何让我的数据网格MyRecordList通过 XAML 拉出?

4

1 回答 1

0

如果您希望绑定工作,您需要设置 DataContext... MVVM 模式有一个 View 和一个 ViewModel。视图是您的UI - 例如窗口(我们称之为 MainWindow),而您的ViewModel是您拥有RecordGrid属性和所有其他命令/属性的地方(我们称之为 MainWindowViewModel 类)

您需要将它们都连接起来,这是通过在您的视图中指定是谁DataContext(在我们的例子中是 MainWindowViewModel 类)来完成的。

所以你会想在你的视图的构造函数中做这样的事情:

    public MainWindow()
    {
        this.DataContext = new MainWindowViewModel();
        InitializeComponent();
于 2013-02-05T22:31:25.423 回答