我有一个简单的问题..是否可以使用这样的绑定:
<my:{Binding Path=Foo} />
我想要这样做的原因是我需要使用条件编译来更改foo
,例如:
#if BAR
var foo = "FooBar"
#endif
答案 0 :(得分:1)
据我所知,在WPF中无法对XAML标记进行动态更改。
如果你确实需要这样的话,我建议你在XAML中使用一个可能的类来保持设计支持并拥有一个有效的XAML文件,然后在编译和交换之前编写一个运行所有xaml文件的小工具。如果满足特定条件,Foo
Bar
Foo
显然,您需要确保Bar
和<my:Foo .../>
也可以互换。
有效地,您的XAML看起来像这样
Foo
并且您的工具会检查条件,然后在所有xaml文件中与Bar
交换{{1}}。
答案 1 :(得分:0)
您想基于预处理器指令绑定到不同的属性吗?这对我来说听起来不容易。让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
}