Это довольно неясно, я могу просто упустить что-то очень простое.
Сценарий 1
Допустим, я создаю градиентную кисть, как показано в разделе <Window.Resources>
:
<LinearGradientBrush x:Key="GridRowSelectedBackBrushGradient" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#404040" Offset="0.0" />
<GradientStop Color="#404040" Offset="0.5" />
<GradientStop Color="#000000" Offset="0.6" />
<GradientStop Color="#000000" Offset="1.0" />
</LinearGradientBrush>
Затем, намного позже, я хочу переопределить HighlightBrushKey
для DataGrid. Я в основном сделал это так (ужасно);
<LinearGradientBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
GradientStops="{Binding Source={StaticResource GridRowSelectedBackBrushGradient}, Path=GradientStops}"
StartPoint="{Binding Source={StaticResource GridRowSelectedBackBrushGradient}, Path=StartPoint}"
EndPoint="{Binding Source={StaticResource GridRowSelectedBackBrushGradient}, Path=EndPoint}" />
Это явно не самый приятный способ ссылки на ресурс. У меня также возникла следующая проблема, которая почти идентична.
Сценарий 2
Скажем, я создал два цвета в моей <Window.Resources>
разметке, вот так:
<SolidColorBrush x:Key="DataGridRowBackgroundBrush" Color="#EAF2FB" />
<SolidColorBrush x:Key="DataGridRowBackgroundAltBrush" Color="#FFFFFF" />
Затем я хочу добавить их в массив, который передает ConverterParameter в привязку, чтобы я мог предоставить пользовательскому конвертеру мои экземпляры статического ресурса:
<Setter Property="Background">
<Setter.Value>
<Binding RelativeSource="{RelativeSource Mode=Self}"
Converter="{StaticResource BackgroundBrushConverter}">
<Binding.ConverterParameter>
<x:Array Type="{x:Type Brush}">
<SolidColorBrush Color="{Binding Source={StaticResource DataGridRowBackgroundBrush}, Path=Color}" />
<SolidColorBrush Color="{Binding Source={StaticResource DataGridRowBackgroundAltBrush}, Path=Color}" />
</x:Array>
</Binding.ConverterParameter>
</Binding>
</Setter.Value>
</Setter>
Я попытался сослаться на существующий ресурс, но своими усилиями я фактически воссоздал ресурс и связал свойства так, чтобы они соответствовали. Опять же, это не идеально.
Поскольку теперь я решил эту проблему хотя бы дважды, есть ли лучший способ?
Спасибо, Том