【问题标题】:WPF - Bind window title to other project public settingsWPF - 将窗口标题绑定到其他项目公共设置
【发布时间】:2013-11-26 20:08:14
【问题描述】:

显然我喜欢让我的生活复杂化,但我觉得这是值得的。

我有一个包含多个 WPF 项目的解决方案(每个项目都构建到自己的应用程序中:服务器、客户端等)。我想在一个地方有一些设置(主要是标签,所以当我更改名称时,我不必在多个文件中找到它),所以我创建了项目“Common”,在它的 Properties.settings 和那些一些职位(ServerName、ClientName)。

现在在 Server.MainWindow 中,我想将 Title 属性设置为 Common.Properties.Default.ServerName。当然在 XAML 中。不幸的是,我不知道该怎么做。

我发现的地方:

<ObjectDataProvider x:Key="odpsettings" ObjectType="{x:Type l:Properties.Settings}"></ObjectDataProvider>

但无论我输入什么,我都会得到

nested properties are not supported

基本上它不起作用,我不知道从哪里开始......

【问题讨论】:

    标签: c# .net wpf xaml data-binding


    【解决方案1】:

    问题是不允许执行{x:Static common:Properties.Default.ServerName} 之类的操作,但只有{x:Static common:Properties.Default} 是可以的。

    所以您需要做的就是将绑定源设置为{x:Static common:Properties.Default},并在绑定路径中指定请求的键,从而避免整个不支持的嵌套类型问题:

    <Window Title="{Binding Source={x:Static common:Properties.Default}, Path=ServerName}">
    

    【讨论】:

    • 属性是从设计器自动生成的,所以在代码中我将其称为:Common.Properties.Default.ServerName,所以在 XAML 中:Title="{x:Static common:Properties. Default.ServerName}" 但我得到:不支持嵌套类型
    • 我可以将这些属性设为具有静态属性的自定义类,但也许我没有?
    • 成功了!非常感谢你。现在,为了让它工作,我必须对 xmlns 做一个小改动: xmlns:common="clr-namespace:Common;assembly=Common"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多