假设我有一个usercontrol,它基本上是一个按钮,在XAML中设置。该按钮是否可以从不同文件中的不同usercontrol类获取其背景颜色,以便在运行时可以更改?
我从谷歌找到的所有内容都是关于主题的讨论以及他们如何想要引用主题文件或主窗口,但我没有发现其中任何一个都有用,因为对于一个,我不会有任何想法如何在运行时更改主题文件(如果它甚至可能),其次,我打算使用这些控件我也是其他项目中的建筑物,所以我不希望它们依赖于与主窗口有关的任何事情。 / p>
答案 0 :(得分:1)
在按钮的背景颜色上使用WPF的DynamicResource标记扩展,然后您可以在运行时动态更改资源,从而更改主题。
请参阅Stackoverflow对WPF Dynamically change resource file and theme的回答。
答案 1 :(得分:0)
所有这些都解释了事情太混乱,而答案就像馅饼一样简单。
步骤1:将资源目录文件添加到项目中并创建变量,如
<SolidColorBrush x:Key="lsd" />
第2步:添加到要访问资源的每个用户控件
<UserControl.Resources>
<ResourceDictionary Source="myResourceName.xaml"/>
</UserControl.Resources>
stel3:使用像
这样的资源<Grid Background="{DynamicResource lsd}/>
步骤4:通过调用
之类的东西来修改任何受影响控件中资源中的变量Resources("lsd") = Brushes.Blue
步骤5:为了额外的欢闹,在你的控件中添加这样的子
Public Sub lsdMode() Handles Me.MouseMove
Dim r As New Random
Resources("sbL1") = New SolidColorBrush(Color.FromRgb(r.Next(255), r.Next(255), r.Next(255)))
End Sub