来自另一个类的C#WPF DataGrid绑定

时间:2018-08-12 10:15:55

标签: c# wpf binding datagrid

我有一个窗口,我想在其中从另一个类自动生成ObservableCollection。在后端进行设置时,一切正常:

XAML

<DataGrid Name="ResidenceGrid" AutoGenerateColumns="True"/>

CS
public ResidenceWindow()
    {
        InitializeComponent();
        ResidenceGrid.ItemsSource = Manager.ResidenceList;
    }

但是当我尝试在xaml中完成所有操作时,DataGrid显得空白:

XAML

<DataGrid Name="ResidenceGrid" ItemsSource="{Binding Path=Manager.ResidenceList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="True"/>

CS
public ResidenceWindow()
    {
        InitializeComponent();
    }

以防万一,从另一个类调用了ObservableCollection:

static class Manager
{
    public static ObservableCollection<Residence> ResidenceList { get; set; } = new ObservableCollection<Residence>();
}

知道我在这里缺少什么吗?

2 个答案:

答案 0 :(得分:1)

如果要使用绑定,则需要在ResidenceWindow内设置DataContext。

例如:

public ResidenceWindow()
{
    InitializeComponent();
    this.DataContext = Manager;
}

https://www.wpf-tutorial.com/data-binding/using-the-datacontext/

答案 1 :(得分:1)

您可以像这样绑定到静态Manager.ResidenceList属性:

<DataGrid Name="ResidenceGrid" ItemsSource="{x:Static local:Manager.ResidenceList}" AutoGenerateColumns="True"/>

并且没有理由将Mode属性的绑定ItemsSource设置为TwoWay或将UpdateSourceTrigger设置为PropertyChanged