【问题标题】:How can i bind datagrid to some properties of a class in wpf?如何将数据网格绑定到 wpf 中类的某些属性?
【发布时间】:2012-09-09 18:30:42
【问题描述】:

是否可以将数据网格仅绑定到类的选择性成员? 我目前进行绑定的方式,所有类变量都已绑定(一对一映射)到数据网格的列。

    private void OnPropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }

现在我只想将几个类属性(不是全部)绑定到数据网格。

【问题讨论】:

  • 是的,这是可能的,但是...给我们看一些代码!你的班级、你的 DataGrid 和你的目标:你到底想绑定什么?

标签: wpf class data-binding datagrid


【解决方案1】:

是的,只需关闭 AutoGenerateColumns 并手动指定它们

在 MainWindow.xaml 中

<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Hello}" Header="Hello" />
        <DataGridTextColumn Binding="{Binding World}" Header="World" />
    </DataGrid.Columns>
</DataGrid>

在 MainWindow.xaml.cs 中

  public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new[] { new FakeViewModel() };
    }
}

在 FakeViewModel.cs 中

namespace WpfApplication4
{
  class FakeViewModel
  {
    public FakeViewModel()
    {
        Hello = "Hello";
        World = "World";
        Then = DateTime.Now;
    }
    public DateTime Then { get; set; }
    public string Hello { get; set; }
    public string World { get; set; }
  }
}

请注意未使用的属性 Then!

【讨论】:

  • 我已经扩展了这个例子,所以你可以更清楚地看到它确实使用了一个类。但是,您是否建议您仍想自动生成列并简单地排除其中一些列?
  • 谢谢!这几乎就是我想要的。但是,如果有办法在不设置自动生成列的情况下做到这一点,我真的很想知道。
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 2021-01-17
  • 2021-09-16
  • 2014-01-06
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多