Сетка данных, заполняющая пустые строки в SelectedItemChanged TreeView - PullRequest
0 голосов
/ 11 января 2011

Когда мой DataGrid заполняет событие TreeView SelectedItemChanged, он находит объекты и создает соответствующие строки, но строки заполняются без текста или просто пустые.Так что я знаю, что он находит мои объекты, но не отображает их должным образом.Кто-нибудь видит, где я сделал ошибку или предлагает какие-либо изменения или исправления?Заранее спасибо!

Вот код CSharp, который устанавливает DataSrid ItemsSource (я использую .dbml и LINQ с лямбда-выражениями):

dgSystemSettings.ItemsSource = (tvSystemConfiguration.SelectedItem as SYSTEM_SETTINGS_GROUP)
                               .SYSTEM_SETTINGS_NAMEs
                               .Join(ssdc.SYSTEM_SETTINGS_VALUEs, x => x.SSN_ID, 
                                     y => y.SSV_SSN_ID, 
                                     (x, y) => new { SYSTEM_SETTINGS_NAME = x, 
                                     SYSTEM_SETTINGS_VALUE = y });

А вот и .xaml:

    <DataGrid Name="dgSystemSettings" 
              AutoGenerateColumns="False" 
              Height="447" Width="513" 
              DockPanel.Dock="Right" 
              ItemsSource="{Binding}" 
              VerticalAlignment="Top" 
              Margin="10,10,0,0">
        <DataGrid.Columns>
            <DataGridTextColumn x:Name="colDisplayName" 
                                Header="Name" 
                                Binding="{Binding SSN_DISPLAY_NAME}"></DataGridTextColumn>
            <DataGridTextColumn x:Name="colValue" 
                                Header="Value" 
                                Binding="{Binding SSV_VALUE}"></DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

SSN_DISPLAY_NAME - это столбец в SYSTEM_SETTINGS_NAMES SSV_VALUE - это столбец в SYSTEM_SETTINGS_VALUES

Я присоединился к таблицам в своем лямбда-выражении, поэтому я могу отображать только эти два столбца в моей DataGrid.

Ответы [ 2 ]

1 голос
/ 11 января 2011

Я полагаю, что вы можете изменить текст DataGridTextColumn следующим образом:

<DataGrid Name="dgSystemSettings" AutoGenerateColumns="False" Height="447" Width="513" DockPanel.Dock="Right" ItemsSource="{Binding}" VerticalAlignment="Top" Margin="10,10,0,0">
    <DataGrid.Columns>
        <DataGridTextColumn x:Name="colDisplayName" Header="Name" Binding="{Binding SYSTEM_SETTING_NAME.SSN_DISPLAY_NAME}"></DataGridTextColumn>
        <DataGridTextColumn x:Name="colValue" Header="Value" Binding="{Binding SYSTEM_SETTING_VALUE.SSV_VALUE}"></DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

Поскольку в ваших строках было указано правильное количество элементов, я решил, что это должно быть проблемой связыванияКогда вы устанавливаете ItemsSource DataGrid, он ищет View Collection объекта.Все ваши данные были там, вам просто нужно было включить имена таблиц в привязки.Каждый элемент в вашем коде содержал два объекта для таблиц, а таблицы содержали свойства, которые вы искали.

0 голосов
/ 27 августа 2012

В моем xaml AutoGenerateColumns установлено значение False. Установка True исправила это.

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