1

我正在尝试TreeView使用此示例设置 a 样式,并且一切正常,直到我尝试将绑定添加到我的DataContext. 即,我将箭头的 替换为Fill当前主题。下面是相关代码:PathsMultiBinding

<Path x:Name="Collapsed" HorizontalAlignment="Left" VerticalAlignment="Center"
      Margin="1" Data="M 4 0 L 8 4 L 4 8 Z">
   <Path.Fill>
       <SolidColorBrush>
           <SolidColorBrush.Color>
               <MultiBinding Converter="{StaticResource ThemeToColorConverter}"
                             ConverterParameter="Foreground">
                   <Binding Path="Themes" />
                   <Binding Path="ThemeIndex" />
               </MultiBinding>
           </SolidColorBrush.Color>
       </SolidColorBrush>
   </Path.Fill>
</Path>

我在转换器中设置了断点,问题似乎是两者Bindings都找不到他们的Paths,因为它们都发送null到转换器中。但是,我Button在代码前面设置样式时使用了相同的代码,并且按钮完美显示。

我唯一能想到的是,在 中TreeView StyleBindings它们来自不同的来源。我只是不知道他们将如何做到这一点或如何解决它。谢谢!

4

1 回答 1

1

好的,我明白了,所以我发布了我的解决方案,这样有同样问题的其他人可以(希望)找到它。问题是绑定绑定到TreeView Items,而不是UserControl's DataContext,所以我命名了UserControl并将 设置Bindings' ElementNames为:

<Path x:Name="Collapsed" HorizontalAlignment="Left" VerticalAlignment="Center"
      Margin="1" Data="M 4 0 L 8 4 L 4 8 Z">
   <Path.Fill>
       <SolidColorBrush>
           <SolidColorBrush.Color>
               <MultiBinding Converter="{StaticResource ThemeToColorConverter}"
                             ConverterParameter="Foreground">
                   <Binding ElementName="Control" Path="Themes" />
                   <Binding ElementName="Control" Path="ThemeIndex" />
               </MultiBinding>
           </SolidColorBrush.Color>
       </SolidColorBrush>
   </Path.Fill>
</Path>
于 2012-06-14T09:56:08.707 回答