#c# #wpf #data-binding
#c# #wpf #привязка данных
Вопрос:
У меня простой вопрос.. Можно ли использовать привязку таким образом:
<my:{Binding Path=Foo} />
Причина, по которой я хочу это сделать, заключается в том, что мне нужно foo
изменить, используя условную компиляцию, например:
#if BAR
var foo = "FooBar"
#endif
Ответ №1:
Насколько я знаю, динамические изменения в самой разметке XAML невозможны в WPF. Если вам действительно нужно иметь что-то подобное, я бы посоветовал вам использовать один из ваших возможных классов в XAML, чтобы поддерживать поддержку дизайна и иметь действительный файл XAML, а затем написать небольшой инструмент, который просматривает все ваши файлы xaml перед компиляцией и обменивается Foo
Bar
ими, если выполняется определенное условие. Очевидно, вам нужно будет убедиться, что Foo
и Bar
они также взаимозаменяемы.
Фактически ваш XAML будет выглядеть следующим образом
<my:Foo .../>
и ваш инструмент будет проверять условие, а затем обмениваться Foo
с Bar
ним во всех ваших файлах xaml.
Ответ №2:
Вы хотите привязать к другому свойству на основе директивы препроцессора? Мне кажется, это нелегко сделать. Не лучше ли было бы, чтобы 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
}