如何使用C#和XAML更改窗口中所有形状的颜色? 简明的
我试图在运行时以编程方式更改特定元素的颜色。该项目目前使用Telerik,我可以在运行时更改主题:这与预期一样工作,没有任何问题。但是,我不知道如何在运行时在XAML中更改自定义形状元素的填充或笔划颜色 在我的项目中,我有一个名为Icons.xaml的如何使用C#和XAML更改窗口中所有形状的颜色? 简明的,c#,wpf,xaml,telerik,C#,Wpf,Xaml,Telerik,我试图在运行时以编程方式更改特定元素的颜色。该项目目前使用Telerik,我可以在运行时更改主题:这与预期一样工作,没有任何问题。但是,我不知道如何在运行时在XAML中更改自定义形状元素的填充或笔划颜色 在我的项目中,我有一个名为Icons.xaml的ResourceDictionary文件,其中包含向量形状,可以用作其他控件(如按钮)的内容 代码 代码文件 我使用以下代码在运行时更改主题的标记颜色 GreenPalette.Palette.MarkerColor = (Color)Color
ResourceDictionary
文件,其中包含向量形状,可以用作其他控件(如按钮)的内容
代码 代码文件 我使用以下代码在运行时更改主题的标记颜色
GreenPalette.Palette.MarkerColor = (Color)ColorConverter.ConvertFromString("#FF000000");
_Icons.xaml
我怎么能
填充和/或笔划的值(仅设置了填充的元素应仅更改填充值,而不添加笔划属性)?或者
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;}