0

ここでは、グリッド行に白とグレーの交互の色を付けたいと思います。私は何度も試してみましたが、グリッドのスタイリングを行うことはできません。コードはこちら

<Style TargetType="{x:Type wpftoolkit:DataGrid}">
    <Setter Property="Margin" Value="0" />
    <Setter Property="BorderBrush" Value="#A6A6A6" />
    <Setter Property="BorderThickness" Value="0,1,0,0"/>
    <Setter Property="Background" Value="{StaticResource GridBgBrush}" />
    <Setter Property="RowBackground" Value="White" />
    <Setter Property="AlternatingRowBackground" Value="#FFF3F6FA" />
    <Setter Property="GridLinesVisibility" Value="Horizontal" />
    <Setter Property="HorizontalGridLinesBrush" Value="Transparent" />
    <Setter Property="RowHeaderWidth" Value="0" />
</Style>

ここで StaticResource GridBgBrush は、こ​​のファイルで以前に次のように定義します

plzは適切な解決策を提供します。事前に感謝します。

4

2 に答える 2

0

スタイルが XAML ファイルのリソース セクション内 (参照できるように GridBgBrush の後) で定義されているか、アプリの ResourceDictionary でどこからでもアクセスできるように定義されていることを確認してください。詳細を確認しないと、問題の原因がどこにあるのかわかりません。これがあなたのスタイルを定義する正しい方法です。もし興味があるなら、これが期待通りに機能するいくつかの例があります。

ご存じない場合に備えてもう 1 つ注意すべき点は、DataGrid (DatePicker と共に) が WPF v4.0 に導入されたことです。これにより、そのバージョンをターゲットにできる場合、WPF ツールキットは (少なくとも DataGrid の目的では) 不要になります。とは言っても、片方を使ってもう片方をスタイリングしていることに気づかないと、スタイルがうまくいかない可能性がわずかにあると思います。

<XmlDataProvider x:Key="myData" Source="Data.xml" IsAsynchronous="True" />
<Style TargetType="{x:Type DataGrid}" x:Key="myStyle">
    <Setter Property="AlternatingRowBackground" Value="Red"/>
</Style>

<Grid>
<DataGrid ItemsSource="{Binding Source={StaticResource myData}, XPath=persons/person}" AutoGenerateColumns="False" Style="{StaticResource myStyle}">
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding XPath=firstname}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding XPath=lastname}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>
</Grid>
于 2012-04-26T01:40:24.780 に答える
0

AlternationCount プロパティも設定する必要があります。

于 2012-04-26T10:01:01.493 に答える