2012-07-24 134 views
6

因爲我需要分裂類之間的一些功能,我得出了以下的情況我可以將WPF控件綁定到字段的屬性嗎?

XAML代碼

<CheckBox IsChecked="{Binding MyObjectField.MyBoolean}" /> 

視圖模型

... 
public MyInternalObject MyObjectField; 
... 

的MyObject類

public class MyInternalObject { 
    ... 
    public bool MyBoolean { get; set; } 
    ... 
} 

它不工作,除非我副本在View Model類中使用MyBoolean屬性。

public bool MyBoolean 
{ 
    get { return MyInternalObject.MyBoolean; } 
    set { MyInternalObject.MyBoolean=value; } 
} 

有沒有人有想法?

回答

4

不,你不能。由於綁定系統使用反射來找到

物業在DataContext的(即你的VM)

它不查找領域。我希望這將有所幫助。

+0

所以複製VM中的性能是做... 感謝您的幫助 – 2012-07-24 16:27:22

+0

肯定的,也是在setter方法stting值提高後對的PropertyChanged「MyBoolean」的唯一途徑。 – ethicallogics 2012-07-24 16:31:05

+0

是的,我簡化了這個例子,不過無論如何都要歸功於它。 – 2012-07-24 16:34:57

5

你還不能(in WPF Version 4.5 you can bind to a static property)。但你可以在App.xaml.cs中創建你的財產

public partial class App : Application 
{ 
    public bool MyBoolean { get; set; } 
} 

並且從任何地方綁定。

<CheckBox IsChecked="{Binding MyBoolean, Source={x:Static Application.Current}}"> 
+0

謝謝。很高興知道這個選項。 – 2012-07-24 16:48:14

相關問題