2010-05-22 2 views
1

У меня есть DataTemplate и SolidColorBrush в разделе DataTemplate.Resources. Я хочу привязать цвет к свойству того же объекта данных, к которому привязан сам объект DataTemplate. Однако это не работает. Кисть игнорируется. Зачем?WPF - привязка цветового ресурса к объекту данных в 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> 

Я понимаю, что я мог бы установить это непосредственно также, но мне нужен цвет, чтобы быть ресурсом.

+0

Для этого вам не нужен ресурс SolidColorBrush. Just Bind Background = "{Binding Path = Color, Converter = colorConverter}" – TimothyP

+0

Я понимаю это, но я все же хочу, чтобы цвет был ресурсом, потому что мне нужно установить непрозрачность цвета фона. AFAIK непрозрачность можно установить там, не затрагивая непрозрачность всей границы! – John

ответ

1

«Работает на моей машине» :) У меня есть одна теория. Вы привязываетесь, у вас границы нет контента, поэтому он состоит только из самой границы, но вы устанавливаете свойство фона, а не BorderBrush, так что в действительности у вас нет области, также вы не устанавливаете BorderThickness, так что на самом деле у вас есть граница с 0 ширина и 0 высота. Поэтому установите BorderThickness, Width или Height.

1

В качестве альтернативы вы можете упростить ниже.

<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> 
+0

Я понимаю, что это проще, но, как я уже говорил выше, мне нужно установить непрозрачность фона. AFAIK непрозрачность может быть установлена ​​только там, не влияя на непрозрачность всей границы (что означает элементы внутри нее)! – John

Смежные вопросы