在資源字典我已經存儲了一個視框用帆布WPF改變填充顏色刷
<Style x:Key="MyPathStyle" TargetType="Path">
<Setter Property="Fill" Value="{Binding BackgroundColorBrush,
RelativeSource={RelativeSource AncestorType=iconcontrols:IconAsVisualBrush}}"/>
</Style>
<Viewbox x:Key="Icon2">
<Canvas Width="40.000" Height="40.000">
<Canvas>
<Path Fill="#ff99baf4" Data="F1 M 14.377,23.798" />
<Path Style="{StaticResource MyPathStyle}" Data="..." />
</Canvas>
</Canvas>
</Viewbox>
所以我想改變使用我的控制集裝箱的BackgroundColorBrush(稱爲IconAsVisualBrush)第二條路徑的顏色。 這是
<Grid x:Name="GridIconBrush" Width="40" Height="40">
<Grid.Background>
<VisualBrush x:Name="CtrlVisualBrush" Stretch="Uniform" />
</Grid.Background>
</Grid>
的VisualBrush在CS設置:
private static void OnIconBrushResourceChanged(DependencyObject source
, DependencyPropertyChangedEventArgs e)
{
IconAsVisualBrush control = source as IconAsVisualBrush;
control.CtrlVisualBrush.Visual = (Viewbox)Application.Current.FindResource(e.NewValue);
}
在我的用戶,我可以用folliwing XAML繪製視框:
<iconcontrols:IconAsVisualBrush BackgroundColorBrush="White"
IconBrushResource="Icon2"/>
<iconcontrols:IconAsVisualBrush BackgroundColorBrush="Red"
IconBrushResource="Icon2"/>
畫布繪製正確,但不是顏色。我收到: 找不到與參考'RelativeSource FindAncestor,AncestorType ='IconAsVisualBrush',AncestorLevel ='1'綁定的源代碼。 BindingExpression:路徑= BackgroundColorBrush;的DataItem = NULL;目標元素是'路徑'(Name ='');目標屬性是'填充'(類型'刷')
有沒有一種方法來更改所有者控件中的路徑填充顏色集(而不是使所有IconAsVisualBrush具有相同顏色的動態資源)可以用不同的填充顏色繪製相同的形狀?
我試過數據觸發器,但它不起作用,總是默認的顏色是白色的。該'OnIconBrushResourceChanged'從'dependecy屬性來 公共靜態只讀的DependencyProperty IconBrushResourceProperty = DependencyProperty.Register( 「IconBrushResource」 的typeof(串)的typeof(IconAsVisualBrush) ,新PropertyMetadata(的String.Empty,OnIconBrushResourceChanged));'新的筆刷在xaml代碼中設置。在運行時,調用OnIconBrushResourceChanged並設置VisualBrush。可能在這裏是錯過了「重新綁定」或「刷新綁定」。 –
你爲什麼用字符串來表示筆刷?你能告訴我你用於數據觸發器的代碼嗎? –