Как установить ItemsSource для DataGrid в XAML? - PullRequest
3 голосов
/ 14 июня 2010

Я пытаюсь установить для свойства ItemsSource DataGrid с именем dgIssueSummary значение ObservableCollection с именем IssueSummaryList.В настоящее время все работает, когда я устанавливаю свойство ItemsSource в своем коде:

public partial class MainPage : UserControl
{
    private ObservableCollection<IssueSummary> IssueSummaryList = new ObservableCollection<IssueSummary>

    public MainPage()
    {
        InitializeComponent();
        dgIssueSummary.ItemsSource = IssueSummaryList
    }
}

Однако я бы предпочел установить свойство ItemsSource в XAML, но не могу его получитьработать.Вот код XAML, который у меня есть:

<sdk:DataGrid x:Name="dgIssueSummary" AutoGenerateColumns="False"
                ItemsSource="{Binding IssueSummaryList}" >
    <sdk:DataGrid.Columns>
        <sdk:DataGridTextColumn Binding="{Binding ProblemType}" Header="Problem Type"/>
        <sdk:DataGridTextColumn Binding="{Binding Count}" Header="Count"/>
    </sdk:DataGrid.Columns>
</sdk:DataGrid>

Что мне нужно сделать, чтобы свойство ItemsSource было IssueSummaryList в XAML, а не в C #?

Ответы [ 3 ]

3 голосов
/ 14 июня 2010

Вам нужно сделать «IssueSummaryList» свойством.Если вы сделаете это, вы можете привязать к нему напрямую.Вы не можете связать через Xaml с приватным полем.

Вам также нужно установить DataContext на "this" (или использовать другой метод, чтобы получить соответствующий экземпляр).

1 голос
/ 14 июня 2010

XAML правильный, поэтому проблема должна быть в Связывании.

  • Представляется ли ObservableCollection как свойство?
  • Как вы задали привязку?В самом простом случае вы используете такой код:

    this.DataContext = this;

в обработчике событий Window_Load

1 голос
/ 14 июня 2010

Ваш IssueSummaryList является частным.Вам нужно сделать это свойство с помощью get и set

public ObservableCollection<IssueSummary> IssueSummaryList 
{
     get
     {
        // ...
     }
}
...