У меня есть a DataTemplate
и a SolidColorBrush
в DataTemplate.Resources
раздел. Я хочу связать цвет со свойством того же объекта данных что DataTemplate
самостоятельно связывается с. Однако это не работает. Кисть проигнорирована. Почему?
Вот упрощенный код:
<DataTemplate DataType="{x:Type data:MyData}" x:Name="dtData">
<DataTemplate.Resources>
<SolidColorBrush x:Key="bg" Color="{Binding Path=Color, Converter={StaticResource colorConverter}" />
</DataTemplate.Resources>
<Border CornerRadius="15"
Background="{StaticResource bg}"
Margin="0"
Opacity="0.5"
Focusable="True">
</DataTemplate>
Я понимаю, что мог установить это непосредственно также, но мне нужен цвет, чтобы быть ресурсом.
"Работает на моей машине" :) У меня одна теория. Ваша привязка работает, ваша граница не имеет содержимого, поэтому она состоит только из самой границы, но вы устанавливаете свойство фона, а не BorderBrush, поэтому на самом деле у вас нет области, также вы не устанавливаете BorderThickness, поэтому на самом деле у вас есть граница с 0 ширина и высота 0. Итак, установите BorderThickness, Width или Height.
В качестве альтернативы вы можете упростить, используя нижеприведенное.
<DataTemplate DataType="{x:Type data:MyData}" x:Name="dtData">
<Border CornerRadius="15"
Background="{Binding Path=Color, Converter={StaticResource colorConverter}}"
Margin="0"
Opacity="0.5"
Focusable="True">
</DataTemplate>