[英]WPF Binding does not update Button-Content
有人可能會告訴我這個源代碼有什么問題嗎? 當我點擊按鈕它沒有更新ist值? 首先綁定轉換器使他的工作。
源代碼非常大,所以我只發布一些代碼片段。
XAML:Instances是ObservableCollection的類型
<ListBox Name="Instances">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Tag="{Binding Path=Instance.Name}" Content="{Binding Path=Instance.Active, Converter={StaticResource BTSC}}" Click="ChangeAccess"/>
<TextBlock Text="{Binding Path=Instance.Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
轉換器:
public class BoolToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (((Boolean)value) == true)
return "No";
else
return "Yes";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
事件:
private void ChangeAccess(object sender, RoutedEventArgs e)
{
for...
if ((sender as Button).Tag.ToString() == (DP.Instances[i].Instance as CInstance).Name)
{
SkipIfAndElse...
DP.Instances[i].Instance.Active = true;
}
}
CInstance:
class CInstance : INotifyPropertyChanged
{
private Boolean active;
public Boolean Active
{
get { return active; }
set
{
active = value;
NotifyPropertyChanged("Access");
}
}
}
CInstance類的所有其他值都按預期更新。
在您的CInstance類中
NotifyPropertyChanged("Access");
應該
NotifyPropertyChanged("Active");
我建議你開始使用某種INPC框架。 我個人很喜歡西蒙Cropp的Fody 。 Fody將相應的OnNotifyPropertyChanged添加為后編譯步驟,這意味着您無法獲得基於Expression的解決方案所獲得的運行時命中。
在一天結束時,基於字符串的OnNotifyPropertyChanged都非常脆弱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.