【问题标题】:Set Binding over App.xaml programmatically以编程方式设置对 App.xaml 的绑定
【发布时间】:2017-01-20 12:59:06
【问题描述】:

我想在 App.xaml 中使用 VisualBrush:

<Application.Resources>
    <VisualBrush x:Key="TestBrush1" />
    <VisualBrush x:Key="TestBrush2" />
</Application.Resources>

然后我想像这样在一个窗口中设置绑定:

VisualBrush testBrush = (VisualBrush)FindResource("TestBrush1");
Binding testBinding = new Binding();
testBinding.Source = FirstBrowser;
testBrush.Visual = testBinding;

然后我想用这个 Brush 将 FirstBrowser 的内容显示到另一个窗口。但这会在以后发生。绑定不能以这种方式工作。有人知道我该如何完成这项工作吗?

【问题讨论】:

    标签: c# wpf xaml window visualbrush


    【解决方案1】:

    您不能修改您在 App.xaml 中定义的 VisualBrush,因为它会被运行时自动冻结,因此将没有 Visual 的 VisualBrush 定义为全局资源是没有用的。

    您最好在真正需要时创建一个新画笔。您可以使用 BindingOperations.SetBinding 方法绑定 VisualBrush 的 Visual 属性,如下所示:

    VisualBrush testBrush = new VisualBrush();
    BindingOperations.SetBinding(testBrush, VisualBrush.VisualProperty, new Binding() { Source = FirstBrowser });
    

    【讨论】:

    • 但是我不得不从一个窗口调用这个画笔到另一个窗口。这是否可行,如果可以,性能如何...好吧,我想我必须测试一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2011-02-01
    • 2015-06-04
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多