MVVM Вложение данных - PullRequest
       20

MVVM Вложение данных

1 голос
/ 06 декабря 2011

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

Я что-то пропустил? Вот мой xaml

    <DataGrid Grid.Column="0" AutoGenerateColumns="False" Width="Auto" ItemsSource="{Binding Col1}" ScrollViewer.VerticalScrollBarVisibility="Auto">
                <DataGrid.Columns>
                    <DataGridTemplateColumn Width="SizeToCells" Header="Column1" >
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate  >
                                <StackPanel Orientation="Vertical" >
                                    <Image   Source="{Binding ImagePathItem1}" Height="20" Width="20"/>
                                    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Height="250" Width="250">
                                        <DataGrid.Columns>
                                            <DataGridTemplateColumn Width="SizeToCells" Header="Column2">
                                                <DataGridTemplateColumn.CellTemplate>
                                                    <DataTemplate>
                                                        <TextBlock Text="{Binding MessageData}" Foreground="Orange"/>
                                                    </DataTemplate>
                                                </DataGridTemplateColumn.CellTemplate>
                                            </DataGridTemplateColumn>
                                        </DataGrid.Columns>
                                    </DataGrid>
                                </StackPanel>                                                                        
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>                       
                </DataGrid.Columns>
            </DataGrid>

Коллекция Col1 привязана к родительскому источнику данных, и данные доступны для всех других элементов управления.

1 Ответ

1 голос
/ 07 декабря 2011

Я думаю, что вы неправильно истолковываете, что такое привязка, и в вашем примере выражение привязки неполное: ItemsSource="{Binding}".

Как вы сказали в своем комментарии, Col1 - это ObservableCollection<MyCollectionClass>.Интересно было бы увидеть сам класс, но в любом случае.

Когда вы связываете Col1 со своим родительским DataGrid, свойства класса доступны длядочерние элементы управления для привязки (для каждого элемента в вашей коллекции).Если в MyCollectionClass такого свойства Col1 снова нет, вы не можете связать его с внутренней сеткой DataGrid!

Представьте, что у вас есть следующий класс (упрощенный):

public class MyCollectionClass {

    public string Firstname { get; set; }
    public string Lastname { get; set; }

}
ObservableCollection<MyCollectionClass> Col1;

Затем вы можете связать это следующим образом:

ParentDataGrid: {Binding Col1)
     TextBox: {Binding Firstname}
     TextBox: {Binding Lastname}
     InnerDataGrid: {Binding Col1} // You can't do that

Для каждого экземпляра вашего класса в вашей коллекции в вашей DataGrid будет строка с Имя и Фамилия , поскольку они являются открытыми свойствами класса.Но не с Col1 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...