首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据枚举将Shape.Stroke绑定到ResourceDictionary

根据枚举将Shape.Stroke绑定到ResourceDictionary
EN

Stack Overflow用户
提问于 2016-04-19 19:45:42
回答 1查看 687关注 0票数 2

我已经创建了这个ResourcesDictionary:

代码语言:javascript
复制
 <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中创建了以下枚举:

代码语言:javascript
复制
/// <summary>
/// Enumerator 
/// </summary>
public enum Strokes
{
    /// <summary>
    /// off (value 0)
    /// </summary>        
    Off = 0x00,
    /// <summary>
    /// on (value 1)
    /// </summary>
    On = 0x01,
}

我在UserControl的xaml端放了两个椭圆。

代码语言:javascript
复制
<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>

最后,我插入了以下属性:

代码语言:javascript
复制
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?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2016-04-20 18:00:40

这是如何在将在窗口中使用的控件中使用。

假设您的ResourcesDictionary文件名为StrokeResources.xaml,请将该行放在UserControl的构造函数中的InitializeComponent之前

代码语言:javascript
复制
 //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代码:

代码语言:javascript
复制
<Ellipse Stroke="{Binding StrokeX, Converter={StaticResource ApplicationResourceConverter}}"/>

通过这种方式,资源被添加到实际的应用程序中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36717426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档