簡體   English   中英

WPF復選框IsChecked屬性不會根據綁定值更改

[英]WPF checkbox IsChecked property does not change according to binding value

這是我的代碼:

xaml方面:我使用數據模板與項目“ dataType1”綁定

<DataTemplate DataType="{x:Type dataType1}">
    <WrapPanel>
        <CheckBox IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" Command="{Binding Path=CheckedCommand} />
        <TextBlock Text="{Binding Path=ItemName, Mode=OneWay}" />
    </WrapPanel>
</DataTemplate>

然后創建一個帶有類型為“ dataType1”的項目的ComboBox

<ComboBox Name="comboBoxItems" ItemsSource="{Binding Path=DataItems, Mode=TwoWay}">

這是dataType1定義:

class dataType1{public string ItemName{get; set;} public bool IsChecked {get; set;}}

場景是我准備一個dataType1列表並將其綁定到ComboBox,ItemName可以完美顯示,而無論dataType1中“ IsChecked”的值如何,CheckBox IsChecked值始終處於未選中狀態。

在WPF的CheckBox中綁定IsChecked屬性是否需要特殊處理?

梁啟超

您在這里遇到的問題是CheckBox不知道dataType1.IsChecked的值何時更改。 要解決此問題,請將您的dataType1更改為:

class dataType1 : INotifyPropertyChanged
{ 
    public string ItemName { get; set; }

    private bool isChecked;
    public bool IsChecked 
    {
        get { return isChecked; }
        set 
        {
            if (isChecked != value)
            {
                isChecked = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("IsChecked"));
                }
            }
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
}

因此,現在,當屬性值更改時,它將通過引發PropertyChanged事件來通知綁定它需要更新。

另外,還有更簡便的方法可以避免您不得不編寫盡可能多的樣板代碼。 我使用Josh Smith的BindableObject

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM