簡體   English   中英

WPF綁定不會更新Button-Content

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

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