2015-02-07 106 views
1

我有一個綁定到ViewModel可空布爾值屬性的WPF複選框。我在構造函數中將此屬性設置爲false或true,以避免Interminent狀態,但不管我做什麼初始狀態的複選框保持灰色。綁定工作得很好,因爲一旦我通過單擊UI上的複選框更改狀態,我正在獲取控件值(true/false)。有任何想法嗎?WPF綁定複選框到布爾?

XAML:

<CheckBox Margin="0,4,0,3" 
      VerticalAlignment="Center" 
      Content="Mutual" 
      IsChecked="{Binding MutualChb}" /> 

視圖模型:

public ContstrutorViewModel() 
{ 
    MutualChb = true; 
} 

private bool? _mutualChb; 
public bool? MutualChb 
{ 
    get { return _mutualChb; } 
    set 
    { 
     _mutualChb = value; 
     _mutualChb = (_mutualChb != null) ? value : false; 
     OnPropertyChanged("MutualChb"); 
    } 
} 
+0

它對我來說工作正常。你確定綁定正在工作嗎?你是否在'MutualChb'的setter上設置了一個斷點,以查看它是否在點擊時被調用? – 2015-02-07 14:59:00

+0

是綁定工作正常...我可以得到值,一旦我點擊在複選框上的UI ..(真或假)取決於案例 – Jim 2015-02-07 15:01:42

回答

2

的原因是因爲它是最初爲null。

private bool? _mutualChb; 
public bool? MutualChb 
{ 
    get { return (_mutualChb != null) ? _mutualChb : false; } 
    set 
    { 
     _mutualChb = value;    
     OnPropertyChanged("MutualChb"); 
    } 
} 
+3

'返回(_mutualChb ?? false);'看起來更好 – 2015-02-07 15:00:15

+0

是的確:) :) .. _mutualChb?假... – Jim 2015-02-07 15:04:06

+1

是@Jim我剛剛用你的初始代碼,但我會寫(_mutualChb ?? false); – 2015-02-07 15:44:32