[英]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.