Связывание сетки с двумя источниками данных в серебряном свете - PullRequest
0 голосов
/ 19 ноября 2010

У меня проблема с тем, как лучше связать свою сетку данных.

Проблема в том, что я хотел бы использовать два источника.У меня есть список с множеством инцидентов, каждый инцидент содержит список ошибок.То, что я хотел бы сделать, это связать половину строки вида сетки с некоторыми полями из инцидента и половину сетки с соответствующими ошибками, которые содержит инцидент.

Как бы я мог сделать это наилучшим образом?

У меня есть доступ к компоненту Одна сетка данных, но если нормальная сетка работает, то все хорошо.

Но мне бы хотелось иметь возможность сортировки.1011 *

Ответы [ 2 ]

0 голосов
/ 05 декабря 2011

Я согласен с идеей Кавета, но его решение далеко от реальности. Согласно http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemssource(v=vs.95).aspx

В ItemSourse должен быть реализован интерфейс IEnumerable.

это означает, что ваш ItemWrapper не будет работать вообще.

Вы пытались запустить это?

0 голосов
/ 19 ноября 2010

Звучит так, будто вы просто хотите убедиться, что у вас нет AutoGenerateColumns="True".

<sdk:DataGrid AutoGenerateColumns="False">    
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn 
                Header="ItemSource1Property1Name" 
                Width="SizeToHeader"
                Binding="{Binding ItemSource1.Property1}" 
                FontSize="20" />
            <sdk:DataGridTextColumn 
                Header="ItemSource1Property2Name" 
                Width="SizeToHeader"
                Binding="{Binding ItemSource1.Property2}" 
                FontSize="20" />
            <sdk:DataGridTextColumn 
                Header="ItemSource2Property1Name" 
                Width="SizeToCells"
                Binding="{Binding ItemSource2.Property1}" 
                FontSize="20" />
        </sdk:DataGrid.Columns>
        .
        .
        .
        Rest of Code
        .
        .
        .
</sdk:DataGrid>

РЕДАКТИРОВАТЬ

Если вы решили использовать оболочкудля вашего источника элемента в вашем коде будет что-то вроде этого:

public class ItemWrapper
{
    ObservableCollection<ItemSource1Type> ItemSource1 {get;set;}
    ObservableCollection<ItemSource2Type> ItemSource2 {get;set;}
}

А затем в вашей модели представления или в коде (где вы хотите установить свойства, к которым вы хотите привязать):

public class ViewModel //This may just end up being your code behind depending on how you have your entire SL project set up.
{
    ItemWrapper ItemWrapper { get; set; } //set the two properties either in the constructor or in whatever code initializes ViewModel.
}

В вашем xaml:

<sdk:DataGrid AutoGenerateColumns="False" 
              ItemSource="{Binding ItemWrapper}"
              DataContext="{Binding}">    
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn 
                Header="ItemSource1Property1Name" 
                Width="SizeToHeader"
                Binding="{Binding ItemSource1.Property1}" 
                FontSize="20" />
...