如何使用C#和XAML更改窗口中所有形状的颜色? 简明的

如何使用C#和XAML更改窗口中所有形状的颜色? 简明的,c#,wpf,xaml,telerik,C#,Wpf,Xaml,Telerik,我试图在运行时以编程方式更改特定元素的颜色。该项目目前使用Telerik,我可以在运行时更改主题:这与预期一样工作,没有任何问题。但是,我不知道如何在运行时在XAML中更改自定义形状元素的填充或笔划颜色 在我的项目中,我有一个名为Icons.xaml的ResourceDictionary文件,其中包含向量形状,可以用作其他控件(如按钮)的内容 代码 代码文件 我使用以下代码在运行时更改主题的标记颜色 GreenPalette.Palette.MarkerColor = (Color)Color

我试图在运行时以编程方式更改特定元素的颜色。该项目目前使用Telerik,我可以在运行时更改主题:这与预期一样工作,没有任何问题。但是,我不知道如何在运行时在XAML中更改自定义形状元素的填充或笔划颜色

在我的项目中,我有一个名为Icons.xaml的
ResourceDictionary
文件,其中包含向量形状,可以用作其他控件(如按钮)的内容


代码 代码文件 我使用以下代码在运行时更改主题的标记颜色

GreenPalette.Palette.MarkerColor = (Color)ColorConverter.ConvertFromString("#FF000000");
_Icons.xaml 我怎么能

  • 通过编程更改App.xaml.cs文件中
    填充
    和/或
    笔划
    的值(仅设置了
    填充
    的元素应仅更改
    填充
    值,而不添加
    笔划
    属性)?或者
  • Fill
    Stroke
    绑定XAML中的值以接收我的App.XAML.cs文件给出的值

  • 感谢您抽出时间阅读我的问题。非常感谢您对此提供的任何帮助。

    首先,我建议您将该控件从资源表中弹出,以便您能够正确地控制它们

    当您这样做时,只需使用控件后面的代码,使用后台使用的“SolidColorBrush”的“Color”类型的依赖项属性,然后按元素名称绑定它,您必须在尝试绑定之前至少构建一次项目

    下面是如何编写依赖项属性

    提示:在VS中,编写'propdp'并按tab键两次以打开模板,但现在您可以使用我的模板

       public Color _color
                {
                    get { return (Color)GetValue(ColorProperty); }
                    set { SetValue(ColorProperty, value); }
                }
    
                public static readonly DependencyProperty ColorProperty = 
       DependencyProperty.Register("_color", typeof(Color), typeof(Fileentity), null);
    
    构建一次后,转到xalm并将其放入矩形中:

            <Grid.Background>
              <SolidColorBrush Color="{Binding 
             _color,ElementName=YourControlName" />
            </Grid.Background>  
    
    其中MyClassDataContext是包含您选择的颜色属性(MyColorProperty)的任何给定类

    这里还需要一个依赖项属性,它绑定到控件xalm,就像我之前所展示的那样


    我知道这一切可能很难一下子掌握,因为它需要MvvM的基本知识。

    制作一个笔刷资源。通过DynamicSource使用它。更新资源。谢谢@EdPlunkett。下次有机会我会试试的
    GreenPalette.Palette.MarkerColor = (Color)ColorConverter.ConvertFromString("#FF000000");
    
       public Color _color
                {
                    get { return (Color)GetValue(ColorProperty); }
                    set { SetValue(ColorProperty, value); }
                }
    
                public static readonly DependencyProperty ColorProperty = 
       DependencyProperty.Register("_color", typeof(Color), typeof(Fileentity), null);
    
            <Grid.Background>
              <SolidColorBrush Color="{Binding 
             _color,ElementName=YourControlName" />
            </Grid.Background>  
    
    <local:YourcontrolName _color="{x:Bind MyColorProperty }"/>
    
        public YourControl(){
    
            this.InitializeComponent();
    
            this.DataContext = new MyClassDataContext();
    
       var myContext= (MyClassDataContext)this.DataContext;
          _color=MyContext.MyColorProperty;}