我已经创建了这个ResourcesDictionary:
<LinearGradientBrush x:Key="OffStroke" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF007226" Offset="0"/>
<GradientStop Color="#FF003C15" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="OnStroke" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF6BBF8A" Offset="0"/>
<GradientStop Color="#FF007A27" Offset="0.306"/>
</LinearGradientBrush>然后,我在codeBehind中创建了以下枚举:
/// <summary>
/// Enumerator
/// </summary>
public enum Strokes
{
/// <summary>
/// off (value 0)
/// </summary>
Off = 0x00,
/// <summary>
/// on (value 1)
/// </summary>
On = 0x01,
}我在UserControl的xaml端放了两个椭圆。
<Viewbox x:Name="ViewBoxRoot">
<Grid x:Name="GridRoot" Width="256" Height="256">
<Ellipse x:Name="OnStroke" Stroke={StaticResource OnStroke}/>
<Ellipse x:Name="OffStroke" Stroke="{StaticResource OffStroke}"/>
</Grid>
</Viewbox>
最后,我插入了以下属性:
public static readonly DependencyProperty StrokeXProperty =
DependencyProperty.Register("StrokeX", typeof(Enums.Strokes), typeof(MyUserControl), new PropertyMetadata(Enums.Strokes.Off));
public Enums.Strokes StrokeX
{
get { return (Enums.Strokes)GetValue(myUserControl.StrokeXProperty); }
set
{
SetValue(myUserControl.StrokeXProperty, value);
OnPropertyChanged("StrokeX");
}
}是否可以根据枚举值将Ellipse Stroke属性绑定到笔划ResourceDictionary?
提前感谢
发布于 2016-04-20 18:00:40
这是如何在将在窗口中使用的控件中使用。
假设您的ResourcesDictionary文件名为StrokeResources.xaml,请将该行放在UserControl的构造函数中的InitializeComponent之前
//merge the control resources used to current application
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary(){Source = new Uri("/DLLNameSpace;component/ResourcesDictionaries/StrokeResources.xaml", UriKind.RelativeOrAbsolute)}); 然后修改xaml代码:
<Ellipse Stroke="{Binding StrokeX, Converter={StaticResource ApplicationResourceConverter}}"/>通过这种方式,资源被添加到实际的应用程序中。
https://stackoverflow.com/questions/36717426
复制相似问题