2015-10-08 93 views
0

我有一個畫筆定義爲代碼中的常量,我想將其添加到使用特定鍵在XAML中定義的DataGrid的資源標記中。將常量添加到資源

我該怎麼做?

我需要用,因爲林覆蓋高亮行的外觀的鍵添加現有刷:

<DataGrid.Resources> 
<LinearGradientBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" StartPoint="0,0" EndPoint="0,1"> 
    <GradientStop Color="#FFD6A4" Offset="0"/> 
    <GradientStop Color="#FFAB3F" Offset="1"/> 
</LinearGradientBrush> 
</DataGrid.Resources> 

我想不必重新定義它使用的畫筆是:

public static class Colours 
{ 
    public static LinearGradientBrush HighlightedRow { get; private set; } 
    static Colours() 
    { 
    HighlightedRow = new LinearGradientBrush(Color.FromRgb(255, 214, 164), Color.FromRgb(255, 171, 63), 90); 
    } 
} 
+0

請寫下您的代碼,以便我可以看到您想實現的目標。也許一個可能的解決方案是DataBinding到Viewmodel –

+0

爲什麼你想把它放在你的資源?你能不能只綁定它? –

+0

沒有要綁定的HighlightBrush屬性,因此該關鍵需要在DataGrid的資源中覆蓋 –

回答

1

您可以在代碼中做到這一點的背後:

myDataGrid.Resources.Add(SystemColors.HighlightBrushKey, Colours.HighlightedRow); 

或者在XAML只: 如果你有兩種漸變停止顏色作爲資源,那麼你可以在XAML中動態引用它們。

<Color x:Key="Color1">#FFFF0000</Color> 
<Color x:Key="Color2">#FFFF3300</Color> 
<DataGrid.Resources> 
<LinearGradientBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" StartPoint="0,0" EndPoint="0,1"> 
    <GradientStop Color="{DynamicResource Color1}" Offset="0"/> 
<GradientStop Color="{DynamicResource Color2}" Offset="1"/> 
</LinearGradientBrush> 
</DataGrid.Resources> 
+1

謝謝。這工作。儘管如此,我希望我能夠在XAML中做到這一點。 –

+0

哦,我的壞。我反過來理解它。 :)如果您有兩種漸變停止顏色作爲資源,那麼您可以在XAML中動態引用它們。我已經更新了我的答案。希望有所幫助。 –