可以绑定XAML标记名称吗?

时间:2011-09-30 05:33:28

标签: c# wpf data-binding

我有一个简单的问题..是否可以使用这样的绑定:

<my:{Binding Path=Foo} />

我想要这样做的原因是我需要使用条件编译来更改foo,例如:

#if BAR
   var foo = "FooBar"
#endif

2 个答案:

答案 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 
}