Как программно привязать содержимое кнопки к динамическому ресурсу - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь программно привязать свойство Content моей кнопки WPF к динамическому ресурсу (бизнес-объекту), который я ранее определил, используя заданный путь. До сих пор безуспешно пробовал следующие подходы:

Мой бизнес-объект определен как ресурс:

<Window.Resources>
   <env:PartyType x:Key="myParty" FullName="JOHN"/>
</Window.Resources>

Я попытался привязать свою кнопку программно следующим образом:

        Binding binding = new Binding();
        binding.Source = this.Resources["myParty"];
        binding.Path = new PropertyPath("FullName");
        btn.SetBinding(ContentProperty, binding);

Но, очевидно, когда я сериализую в XAML, он пытается сериализовать весь объект Party, и я просто хочу сохранить ссылку на привязку к моему ресурсу, поэтому эта опция не работает. Мой второй вариант был:

btn.SetResourceReference(ContentProperty,"myParty");

Это сериализуется в XAML как:

<av:Button Content="{av:DynamicResource myParty}"/>

Но я не знаю, как указать мой путь = полное имя, чтобы он мог отображать Party.FullName, а не Party.Type().

Есть идеи, как этого добиться?

Заранее спасибо,

1 Ответ

1 голос
/ 30 марта 2012

Назначьте динамический ресурс для DataContext, а затем создайте привязку без установки свойства Source

btn.SetResourceReference(DataContextProperty,"myParty");

Binding binding = new Binding();
binding.Path = new PropertyPath("FullName");
btn.SetBinding(ContentProperty, binding);

Теперь, если вы уже развернули кнопку DataContext, вам нужно установитьLabel в качестве содержимого кнопки и установите ресурс и привязку на ярлыке.

...