Q088. テーマを適用した XamDataGrid のセルに境界線を引くには?

A.XamDataGrid.FieldSettings.CellValuePresenterStyle プロパティを設定します。


XamDataGrd にはテーマが豊富に用意されてますが、テーマの中にはセル境界線を非表示にしてしまうものもあります。これでは視認性が悪いので表示できないか調べたところ、FieldSettings.CellValuePresenterStyle を設定すれば表示できることが判りました。


以下、サンプルです。どのテーマに切り替えても XamDataGrid のセルで境界線が表示されます。


XAML

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        xmlns:igWPF="http://schemas.infragistics.com/xaml/wpf"
        xmlns:igThemes="http://infragistics.com/Themes"
        Title="MainWindow" Height="320" Width="540"
        WindowStartupLocation="CenterScreen" >
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="8" />
            <ColumnDefinition />
            <ColumnDefinition Width="8" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="8" />
            <RowDefinition Height="30" />
            <RowDefinition Height="4" />
            <RowDefinition />
            <RowDefinition Height="8" />
        </Grid.RowDefinitions>
        <Grid.Resources>
            <ObjectDataProvider MethodName="GetThemes"
                                ObjectType="{x:Type igThemes:ThemeManager}"
                                x:Key="odpThemes">
                <ObjectDataProvider.MethodParameters>
                    <sys:Boolean>True</sys:Boolean>
                    <sys:String>DataPresenter</sys:String>
                </ObjectDataProvider.MethodParameters>
            </ObjectDataProvider>
        </Grid.Resources>
        <ComboBox Grid.Column="1" Grid.Row="1"
                  Height="24" Width="150" 
                  HorizontalAlignment="Left" Margin="22,0" 
                  SelectedItem="{Binding Path=Theme, ElementName=XamDataGrid1}"
                  ItemsSource="{Binding Source={StaticResource odpThemes}}"/>
        
        <igWPF:XamDataGrid Grid.Column="1" Grid.Row="3" BindToSampleData="True"
                           Theme="Metro" x:Name="XamDataGrid1" >
            <igWPF:XamDataGrid.FieldSettings>
                <igWPF:FieldSettings>
                    <igWPF:FieldSettings.CellValuePresenterStyle>
                        <Style TargetType="igWPF:CellValuePresenter">
                            <Setter Property="BorderBrush" Value="Gray" />
                            <Setter Property="BorderThickness" Value="0,0,1,1" />
                        </Style>
                    </igWPF:FieldSettings.CellValuePresenterStyle>
                </igWPF:FieldSettings>
            </igWPF:XamDataGrid.FieldSettings>
        </igWPF:XamDataGrid>
    </Grid>
</Window>

参考記事組み込みテーマを使用


WPF FAQ の目次に戻る