1

WPF で DataGrid の RowHeader の背景を変更したいと思います。スタイルを静的リソースとして作成し、C# でスタイルを追加したいと考えています。以下は、両方とも XAML/C# のコードです。

XAML:

<Window x:Class="GUI.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Window.Resources>
    <Style x:Name="newRowHeader" TargetType="{x:Type DataGridRowHeader}">
        <Setter Property="Background" Value="White" />
    </Style>
</Window.Resources>
<Grid Name="MainGrid">
</Grid>

C#:

System.Windows.Controls.DataGrid dg = new System.Windows.Controls.DataGrid();
dg.RowHeaderStyle = (Style)FindResource("newRowHeader");

エラーは、C# dg.RowHeaderStyle.... の最終行で発生します。エラー: '指定されたバインド制約に一致するタイプ 'GUI.MainWindow' でのコンストラクターの呼び出しにより、例外がスローされました。

助けてください

4

2 に答える 2

0

このコードはどこで実行していますか? それはコンストラクターの中にありますか?そうである場合は、ウィンドウがロードされたときに実行してみてください。

public MainWindow(){
    //...
    Loaded+=(_,e)=>{
         System.Windows.Controls.DataGrid dg = new System.Windows.Controls.DataGrid();
         dg.RowHeaderStyle = (Style)FindResource("newRowHeader");
    };
}

ウィンドウがまだロードされていない可能性があります。それが役に立てば幸い...

于 2013-04-03T20:27:21.170 に答える
0

解決しました。Resources["x:Key"] を使用する必要があります。

于 2013-04-03T20:56:12.723 に答える