我想缩短设置绑定
{Binding Source={x:Static properties:Settings.Default}, Path=Password}
Run Code Online (Sandbox Code Playgroud)
喜欢的东西
{settingsBinding Password}
Run Code Online (Sandbox Code Playgroud)
通过将声明的一部分移动到全局资源字典.但似乎我不能在这里声明绑定.任何想法如何解决这个问题?
我想至少让它像这样
{Binding Source={StaticResource Settings}, Path=Password}
Run Code Online (Sandbox Code Playgroud)
所以我不必每次都包含属性命名空间.
要获得第一个语法,您必须派生Binding并指定源:
public class SettingsBinding : Binding {
public SettingsBinding(string path) : base(path) { Source = Settings.Default; }
public SettingsBinding() { Source = Settings.Default; }
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用:{xxx:SettingsBinding Password}.但是,您仍然需要指定此类的命名空间.我不会推荐这种方法:绑定往往非常冗长,但你知道发生了什么,因为语法总是相同的.
要获得您想要的第二种语法,只需将您定义x:Static为资源,例如:
<Window.Resources>
<x:Static Member="properties:Settings.Default" x:Key="Settings" />
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
您现在可以使用它来引用它StaticResource.