2013-11-26 2 views
2

Видимо, я люблю усложнять свою жизнь, но я чувствую, что это того стоит.WPF - Привязать заголовок окна к другим общественным настройкам проекта

У меня есть решение с несколькими проектами 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 

В основном это не работает, и я не знаю, с чего начать ...

ответ

3

Проблема в том, что делать что-то вроде {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}"> 
+0

Свойства автоматически генерируемый от дизайнера, поэтому в коде я бы назвал это: Common.Properties.Default.ServerName, поэтому в XAML: Title = "{x: Static common: Properties.Default.ServerName}" Но я получаю: вложенные типы не поддерживаются – Gerino

+0

I может сделать эти свойства специальным классом со статическими свойствами, но, возможно, у меня тоже нет? – Gerino

+0

@Gerino См. Мой обновленный ответ –

Смежные вопросы