Динамические данные в DataGridComboBoxColumn
От: zvb733  
Дата: 12.05.11 15:54
Оценка:
Есть DataGrid, в нём две колонки DataGridComboBoxColumn. В первой колонке страны, во второй города. Есть таблица соответствия городов странам. Выбрали в первой колонке Россию, как сделать так, чтобы при клике на комбобокс в ячейке второй колонки показывались только города России?
Re: Динамические данные в DataGridComboBoxColumn
От: seimur  
Дата: 17.05.11 16:24
Оценка:
Здравствуйте, zvb733, Вы писали:

Z>Есть DataGrid, в нём две колонки DataGridComboBoxColumn. В первой колонке страны, во второй города. Есть таблица соответствия городов странам. Выбрали в первой колонке Россию, как сделать так, чтобы при клике на комбобокс в ячейке второй колонки показывались только города России?


Вот примерчик кода

<DataGrid ItemsSource="{Binding Countries}" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=name}" Width="50"/>
                    <DataGridComboBoxColumn 
                        SelectedValueBinding="{Binding Path=CurrentCity}"
                        SelectedValuePath="id"
                        DisplayMemberPath="name">
                        <DataGridComboBoxColumn.ElementStyle>
                            <Style TargetType="{x:Type ComboBox}">
                                <Setter Property="ItemsSource" Value="{Binding country_cities}"/>
                            </Style>
                        </DataGridComboBoxColumn.ElementStyle>
                        <DataGridComboBoxColumn.EditingElementStyle>
                            <Style TargetType="{x:Type ComboBox}">
                                <Setter Property="ItemsSource" Value="{Binding country_cities}" />
                            </Style>
                        </DataGridComboBoxColumn.EditingElementStyle>
                    </DataGridComboBoxColumn>
                </DataGrid.Columns>
            </DataGrid>

country_cities — это связь между таблицами в DataSet
Теоретически нет разницы между теорией и практикой, но на практике она есть
Re[2]: Динамические данные в DataGridComboBoxColumn
От: seimur  
Дата: 17.05.11 16:48
Оценка:
Здравствуйте, seimur, Вы писали:

S>Здравствуйте, zvb733, Вы писали:


Z>>Есть DataGrid, в нём две колонки DataGridComboBoxColumn. В первой колонке страны, во второй города. Есть таблица соответствия городов странам. Выбрали в первой колонке Россию, как сделать так, чтобы при клике на комбобокс в ячейке второй колонки показывались только города России?


S>Вот примерчик кода


S>
S><DataGrid ItemsSource="{Binding Countries}" AutoGenerateColumns="False">
S>                <DataGrid.Columns>
S>                    <DataGridTextColumn Binding="{Binding Path=name}" Width="50"/>
S>                    <DataGridComboBoxColumn 
S>                        SelectedValueBinding="{Binding Path=CurrentCity}"
S>                        SelectedValuePath="id"
S>                        DisplayMemberPath="name">
S>                        <DataGridComboBoxColumn.ElementStyle>
S>                            <Style TargetType="{x:Type ComboBox}">
S>                                <Setter Property="ItemsSource" Value="{Binding country_cities}"/>
S>                            </Style>
S>                        </DataGridComboBoxColumn.ElementStyle>
S>                        <DataGridComboBoxColumn.EditingElementStyle>
S>                            <Style TargetType="{x:Type ComboBox}">
S>                                <Setter Property="ItemsSource" Value="{Binding country_cities}" />
S>                            </Style>
S>                        </DataGridComboBoxColumn.EditingElementStyle>
S>                    </DataGridComboBoxColumn>
S>                </DataGrid.Columns>
S>            </DataGrid>
S>

S>country_cities — это связь между таблицами в DataSet

здесь неплохо это описано.
Теоретически нет разницы между теорией и практикой, но на практике она есть
Re[3]: Динамические данные в DataGridComboBoxColumn
От: zvb733  
Дата: 18.05.11 06:39
Оценка:
Здравствуйте, seimur, Вы писали:

S>здесь неплохо это описано.


Большое спасибо, попробую. Пока сделал по другому — через DataGridTemplateColumn:

<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding City}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding City}" ItemsSource="{Binding Cities}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

Идея отсюда: How to get cell level ComboBox for WPF DataGrid?
Извратновато конечно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.