我想缩短设置绑定(bind)
{Binding Source={x:Static properties:Settings.Default}, Path=Password}
类似的东西
{settingsBinding Password}
通过将声明的一部分移动到全局资源字典。但似乎我不能在这里声明绑定(bind)。有什么想法可以实现吗?
我至少要做到这样
{Binding Source={StaticResource Settings}, Path=Password}
所以我不必每次都包含属性命名空间。
最佳答案
要获得第一个语法,您必须从 Binding
派生并指定来源:
public class SettingsBinding : Binding {
public SettingsBinding(string path) : base(path) { Source = Settings.Default; }
public SettingsBinding() { Source = Settings.Default; }
}
然后您可以使用:{xxx:SettingsBinding Password}
。但是,您仍然必须指定此类的 namespace 。不过我不推荐这种方法:绑定(bind)往往非常冗长,但你知道发生了什么,因为语法总是相同的。
要获得您想要的第二种语法,只需将您的 x:Static
定义为资源,例如:
<Window.Resources>
<x:Static Member="properties:Settings.Default" x:Key="Settings" />
</Window.Resources>
您现在可以使用 StaticResource
引用它。
关于c# - 如何在 XAML 中定义对现有对象的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6736697/