gpt4 book ai didi

wpf - 将 Setter 值绑定(bind)到 DynamicResource

转载 作者:行者123 更新时间:2023-12-04 16:14:53 24 4
gpt4 key购买 nike

我正在后面的代码中创建触发器,并且我正在尝试将 setter 的值绑定(bind)到在后面的代码中创建的动态资源,这样我就可以随时更新资源并且仍然更新 setter 的值。我到此为止

SolidColorBrush brush = Brushes.Red;
Resources.Add("NewBrush",brush);
Setter setter = new Setter();
setter.Property = Control.BackgroundProperty;

但我不确定如何将 setter 的值绑定(bind)到创建的动态资源。我不能简单地在 XAML 中创建资源,因为需要动态创建资源。如何将 Setter 的值绑定(bind)到动态资源,以便更改资源将更改 setter 的值。

更多信息需要澄清。这一切都在后面的代码中完成,因为一切都是动态生成的。触发器、 setter 、格式化、控件都是基于 XML 结构创建的。

最佳答案

使用 ILSpy 进行一些反编译帮助解决了这个问题:

public partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();

var style = new Style(typeof (Button));

var brush = new SolidColorBrush(Colors.Blue);

Resources["TheColor"] = brush;
var dynamicResource = new DynamicResourceExtension("TheColor");

var setter = new Setter()
{
Property = Control.BackgroundProperty,
Value = dynamicResource
};
style.Setters.Add(setter);

button1.Style = style;
}

private void button1_Click(object sender, RoutedEventArgs e)
{
var brush = new SolidColorBrush(Colors.Red);

Resources["TheColor"] = brush;
}
}

有趣的是,Setter.Value 需要一个 DynamicResourceExtension 的值。我最初认为由 DynamicResourceExtension.ProvideValue() 生成的表达式将是 setter 值应该采用的。无论如何,这似乎有效。

关于wpf - 将 Setter 值绑定(bind)到 DynamicResource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15365558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com