Application类的静态成员的绑定属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Application类的静态成员的绑定属性相关的知识,希望对你有一定的参考价值。

我有一个类“Application”,它有一个静态成员(MainWindow,继承自DXWindow),如下所示:

public static MainWindow MainWindowInstance

我实例化并显示它:

MainWindowInstance = new MainWindow();
MainWindowInstance.ShowDialog();

MainWindow有一个属性:

private Thickness _localAttachmentsButtonsMargin = new Thickness(0, 0, 5, 0);
public Thickness LocalAttachmentsButtonsMargin {
    get {
        return _localAttachmentsButtonsMargin;
    }
    set {
        _localAttachmentsButtonsMargin = value;
        NotifyPropertyChanged("LocalAttachmentsButtonsMargin");
    }
}

我需要从xaml中的许多其他控件(如UserControls)访问LocalAttachmentsButtonsMargin属性。

到目前为止我尝试的是:

- >使用x:Static访问它:

Margin="{Binding Path=MainWindowInstance.LocalAttachmentsButtonsMargin, Source={x:Static Application.Current}}"

- >给UserControl一个x:Name(“UcTmp”),在UserControl中提供一个getter并从后面的代码中访问该属性

Margin="{Binding ElementName=UcTmp, Path=LocalAttachmentsButtonsMargin}}"

public Thickness LocalAttachmentsButtonsMargin {
        get {
            Application.MainWindowInstance.LocalAttachmentsButtonsMargin;
        }
    }

但它们似乎都不起作用。我想我需要xaml等效于上面给出的getter中的一行代码。

另一个要求是MainWindow中的属性需要是可更新的。理想情况下,如果通过某些代码更新属性,解决方案能够更新通过UserControl表示的视图。

答案

由于您只能绑定到属性,因此您应该将MainWindowInstance定义为:

public static MainWindow MainWindowInstance { get; set; }

它不能是一个领域:

public static MainWindow MainWindowInstance;

以上是关于Application类的静态成员的绑定属性的主要内容,如果未能解决你的问题,请参考以下文章

java 静态代码块 代码块 构造函数 静态成员变量 成员变量的初始化顺序

Java类的成员-代码块

面向对象1——类的成员

数据绑定—Source(绑定到静态类的静态属性)

java中私有的属性、静态成员可以被子类继承吗?

Java类的成员之四:代码块.