DataGridでグループ化して表示 WPFDataGridでグループ化して表示 WPF
今回も前回の続きで、データグリッド。 System.Windows.Data Error: 40 : BindingExpression path error: '県' property not found on 'object' ''CollectionViewGroupInternal'と言うエラーがでる。が、実行可能だ。 何が悪いのやら? WPFで困るのは、先行サンプルが複数無いので、ハマルとなかなか解決できなくて、時間だけが経つといったところか。 翌朝、<Label Content="{Binding }"/>とやってみるとすんなりとできたのだが、なんで? ちなみに、この処理だが、都道府県を全て持ってくると、重くて、とてもじゃないが、使えない。 と言うわけで、TOP10等としてみたが、件数が多い場合には要注意の処理みたいだ。
<Window x:Class="Window5" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window5" Height="300" Width="300"> <Grid> <Grid.Resources> </Grid.Resources> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Button Content="Button" Grid.Row="0" Height="41" Name="Button1" Width="154" /> <DataGrid Grid.Row="1" Name="DataGrid1" > <DataGrid.GroupStyle> <GroupStyle> <GroupStyle.ContainerStyle> <Style TargetType="{x:Type GroupItem}"> <Setter Property="Margin" Value="0,0,0,5"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type GroupItem}"> <Expander Background="Aqua" BorderBrush="#FF002255" Foreground="Chocolate" BorderThickness="1,1,1,5"> <Expander.Header> <DockPanel> <!--<Label Content="{Binding 県}"/>--><!--うまくバインドされない!?何をすれば?--> <TextBlock FontWeight="Bold" Text="県" Margin="5,0,0,0" Width="100"/> </DockPanel> </Expander.Header> <Expander.Content> <ItemsPresenter /> </Expander.Content> </Expander> </ControlTemplate> </Setter.Value> </Setter> </Style> </GroupStyle.ContainerStyle> </GroupStyle> </DataGrid.GroupStyle> </DataGrid> </Grid> </Window> 下記に書き直したらうまくいったが、なんで? <Window x:Class="Window5" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window5" Height="300" Width="300"> <Grid> <Grid.Resources> </Grid.Resources> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Button Content="Button" Grid.Row="0" Height="41" Name="Button1" Width="154" /> <DataGrid Grid.Row="1" Name="DataGrid1"> <DataGrid.GroupStyle> <GroupStyle> <GroupStyle.ContainerStyle> <Style TargetType="{x:Type GroupItem}"> <Setter Property="Margin" Value="0,0,0,5"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type GroupItem}"> <Expander Background="Aqua" BorderBrush="#FF002255" Foreground="Chocolate" BorderThickness="1,1,1,5"> <Expander.Header> <DockPanel> <Label Content="{Binding }"/><!--これだとバインされる--> 参考url > </DockPanel> </Expander.Header> <Expander.Content> <ItemsPresenter /> </Expander.Content> </Expander> </ControlTemplate> </Setter.Value> </Setter> </Style> </GroupStyle.ContainerStyle> </GroupStyle> </DataGrid.GroupStyle> <DataGrid.Columns> <!--<DataGridTextColumn Header="県" Binding="{Binding 県}" ></DataGridTextColumn>--> <DataGridTextColumn Header="郵便番号" Binding="{Binding 郵便番号}" ></DataGridTextColumn> <DataGridTextColumn Header="市区町村" Binding="{Binding 市区町村}" ></DataGridTextColumn> <DataGridTextColumn Header="町域" Binding="{Binding 町域}" ></DataGridTextColumn> </DataGrid.Columns> </DataGrid> </Grid> </Window> |