私は3つの列を持つアグリッドを持っています:
- 分かりやすい名前
- 大陸名
- 国名
最初の列は、編集可能なテキストボックス列です。2番目の列は、大陸のリストを表示するコンボボックスです。3列目は、2列目で選択した大陸に基づいた国のリストを表示するコンボボックスです。これらの列にシングルクリックを実装したいと思います。このリンクにある解決策を試しました WPFDataGridでのシングルクリック編集
ただし、これは最初の列でのみ機能し、他の2つの(DataGridTemplateColumn)列では機能しません。
これはどのように可能ですか。提案してください。サンプルのXAMLとデータの説明を以下に示します。
<DataGrid Grid.Row="1" VerticalAlignment="Top"
ItemsSource="{Binding Path=GeographyData,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource DataGridStyleNormal}">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Friendly name" Binding="{Binding Path=FriendlyName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<!--FilterDef -->
<DataGridTemplateColumn Width="*"
Header="Continents">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedValue="{Binding ContinentId, Mode=TwoWay}"
SelectedValuePath="ID"
DisplayMemberPath="Name"
ItemsSource="{Binding Path=DataContext.ContinentsAndCountries,Mode=OneWay,UpdateSourceTrigger=PropertyChanged,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource ContinentCaptionConverter}">
<Binding Path="ContinentId"/>
<Binding Path="DataContext.ContinentsAndCountries" RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--Level-->
<DataGridTemplateColumn Width="*"
Header="Countries">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedValue="{Binding CountryId, Mode=TwoWay}"
SelectedValuePath="ID"
DisplayMemberPath="Name">
<ComboBox.ItemsSource>
<MultiBinding Converter="{StaticResource CountryValuesConverter}">
<Binding Path="DataContext.ContinentsAndCountries" RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}"/>
<Binding Path="ContinentId"/>
</MultiBinding>
</ComboBox.ItemsSource>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource CountryCaptionConverter}">
<Binding Path="DataContext.ContinentsAndCountries" RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}"/>
<Binding Path="ContinentId"/>
<Binding Path="CountryId"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
注:データ「ContinentsAndCountries」は、マスター詳細データの監視可能なコレクションです。
- ギリヤ