Могут ли быть привязаны имена тегов XAML? - PullRequest
1 голос
/ 30 сентября 2011

У меня простой вопрос. Можно ли использовать привязку так:

<my:{Binding Path=Foo} />

Причина, по которой я хочу это сделать, заключается в том, что мне нужно foo изменить, используя условную компиляцию, например:

#if BAR
   var foo = "FooBar"
#endif

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Насколько я знаю, динамические изменения самой разметки XAML невозможны в WPF.Если вам нужно что-то подобное, я бы посоветовал вам использовать один из ваших возможных классов в XAML, чтобы сохранить поддержку проектирования и иметь действительный файл XAML, а затем написать небольшой инструмент, который проходит через все ваши файлы xaml перед компиляцией и обменом.Foo с Bar, если выполняется определенное условие.Очевидно, вам необходимо убедиться, что Foo и Bar также взаимозаменяемы.

Фактически ваш XAML будет выглядеть так

<my:Foo .../>

, а ваш инструмент проверит условие, а затемзамените Foo на Bar во всех ваших файлах xaml.

0 голосов
/ 30 сентября 2011

Вы хотите связать другое свойство на основе директивы препроцессора? Звучит нелегко для меня. Не лучше ли использовать Xaml для того же свойства, но для свойства использовать другое тело / поле:

public string MyDebugFoo { get; set; }
public string MyOtherFoo { get; set; }

public string Foo {
#if DEBUG
  get { return MyDebugFoo; } }
  set { MyDebugFoo = value; } }        
#else
  get { return MyOtherFoo; } }
  set { MyOtherFoo = value; } }
#endif 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...