#wpf #xaml #binding
#wpf #xaml #привязка
Вопрос:
Я создаю ресурс в window xaml. Этот ресурс является контроллером, подобным этому
<Window.Resources>
<ext:Controller x:Key="Controller"/>
</Window.Resource>
В моем xaml есть элементы управления, которые я хочу привязать, так сказать, к «составным элементам» в контроллере.
Например, если бы у меня была строка в контроллере, и я хочу привязать к этой длине строки
<TextBlock Text="{Binding Source={StaticResource Controller},Path=myString.Length}"/>
или что-то в этом роде.
Это кажется странным способом сделать это, но я хочу сохранить все эти элементы в контроллере, а не делать их отдельными ресурсами, чтобы у них был доступ к определенным вещам в контроллере.
Реальная суть проблемы заключается в том, что у меня есть пара окон, и я хочу, чтобы они совместно использовали общий ресурс (экземпляр контроллера). Итак, я поместил статический идентификатор контроллера в контроллер. я на самом деле хочу привязать, как
<TextBlock Text="{Binding Source={StaticResource Controller},Path=StaticInstance.memberProperty/>
Возможно ли привязать к члену члена или какой подход я должен использовать вместо того, чтобы использовать, так сказать, «составной путь в привязке»?
Спасибо, ребята! Ценю помощь
Ответ №1:
StaticInstance
не является свойством вашего ресурса (который является экземпляром), поскольку он статичен. Если вы хотите привязаться к статическим элементам, вы можете использовать x:Static
расширение markup, обратите внимание, что синтаксис довольно специфичен.
Привязка, вероятно, будет выглядеть следующим образом:
{Binding Source={x:Static myns:Controller.StaticInstance}, Path=memberProperty}
Комментарии:
1. Да, это именно то, что я хотел x: Static — вот чего мне не хватало. Спасибо!