2009-09-29 74 views
1

我有一個用戶控件複選框:綁定的屬性總是返回false但WPF綁定的CheckBox還是檢查

<CheckBox Content="Existing" IsChecked="{Binding Path=IsExistingTemplate, Mode=TwoWay}"/> 

這勢必會帶有屬性IsExistingTemplate的DataContext總是返回False。 (在我的真實應用程序中,它並不總是返回False!)。 DataContext實現INotifyPropertyChanged。

public bool? IsExistingTemplate { 得到 { return false; } 設置 { OnPropertyChanged( 「IsExistingTemplate」) } }

當用戶點擊該複選框,複選框總是顯示蜱。

如何強制CheckBox在用戶點擊時不顯示勾號?

+0

請發佈您的IsExistingTemplate代碼。 – 2009-09-29 10:53:47

+0

很抱歉 - 現在糾正。 – hayrob 2009-09-29 11:13:56

回答

0

我記得有一個非常類似的問題,但我找不到在哪裏以及如何解決它。我認爲這個問題是由WPF如何更新綁定引起的,我認爲我在某處讀到它可以通過使用簡單地傳遞值的IValueConverter來解決,但我已經測試過它並且它似乎沒有工作。它應該工作,因爲使用轉換器應該使綁定重新評估。

您可以隨時處理CheckBox上的Clicked事件並通過代碼更新值,但它只是感覺很髒。抱歉,我無法提供更多幫助

<StackPanel.Resources> 
    <local:PassThroughConverter x:Key="PassThroughConverter" /> 
</StackPanel.Resources> 
<CheckBox IsChecked="{Binding IsExistingTemplate, Converter={StaticResource PassThroughConverter}}" Content="Stuff"/> 

public class PassThroughConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value; 
    } 
}