2012-04-10 31 views
0

我在一個文件中聲明瞭DrawingBrush,並且在另一個文件中聲明瞭一個Style。樣式使用DrawingBrush作爲背景填充。現在,在UserControl XAML文件中,我通過綁定來引用Style。如何使用觸發器更改另一個文件中引用的WPF樣式中的屬性?

Style="{DynamicResource myCustomStyle}" 

這是棘手的部分。我想使用DataTrigger更改DrawingBrush中路徑的填充顏色。現在,由於樣式存在於一個文件中,而另一個文件中存在DrawingBrush,我將如何完成此操作?

我希望避免爲我需要的每種顏色創建多個DrawingBrush es。我希望它是動態和可重用的。

回答

0

看起來不能這樣做。我已經嘗試將DrawingBrush移動到ResourceDictionary,並且一旦完成,數據綁定就會拋出錯誤。如果我採取以下XAML

<Rectangle x:Name="IconBrush" local:Helper.Colour="Black"> 
    <Rectangle.Fill> 
     <DrawingBrush Stretch="Uniform"> 
      <DrawingBrush.Drawing> 
       <DrawingGroup> 
        <DrawingGroup.Children> 
         <GeometryDrawing Geometry="M1,1 L9.5,1 L9.5,13 L1,13 z M10.5,10.4 L13.15,13 M11.6,7.675 C11.6,9.5113467 10.066575,11 8.175,11 C6.2834248,11 4.75,9.5113467 4.75,7.675 C4.75,5.8386532 6.2834248,4.35 8.175,4.35 C10.066575,4.35 11.6,5.8386532 11.6,7.675 z"> 
          <GeometryDrawing.Pen> 
           <Pen Thickness="1" 
            Brush="{Binding Path=(local:Helper.Colour), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Rectangle}}}" /> 
          </GeometryDrawing.Pen> 
         </GeometryDrawing> 
        </DrawingGroup.Children> 
       </DrawingGroup> 
      </DrawingBrush.Drawing> 
     </DrawingBrush> 
    </Rectangle.Fill> 
</Rectangle> 

然後將其更改爲此,而它停止工作。不知道爲什麼它不能這樣做,以利用可重用資源。

<Rectangle x:Name="IconBrush" pm4uc:Helper.Colour="Black" 
      Fill="{DynamicResource NewIconBrush}" /> 

我想WPF不能解決資源字典中尋找祖先或綁定。

相關問題