如何在WPF中将DataGrid绑定到类的某些属性?

5

是否有可能将datagrid绑定到类的选择性成员? 目前我所做的绑定方式是,所有类变量都已经被绑定(一对一映射)到datagrid的列。

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

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


是的,这是可能的,但...请给我们看一些代码!你的类、你的DataGrid以及你的目标:你想绑定什么? - Damascus
1个回答

18

可以的,只需关闭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!

我已经扩展了这个示例,以便您可以更清楚地看到它确实使用了一个类。但是,您是在建议仍然要自动生成列并仅排除其中一些吗? - AlSki
谢谢!这基本上就是我想要的。不过,如果有一种不需要设置自动生成列的方法,我真的很想知道。 - Amber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接