簡體   English   中英

WPF復選框IsChecked雙向綁定不起作用

[英]WPF checkbox IsChecked two way binding not working

以下代碼是我為雙向綁定編寫的。 當代碼中的任何內容發生更改時,UI都會更新,反之亦然,當用戶單擊復選框時,UI不會更改數據代碼。 贊賞是否有人對解決方案有所了解。

XAML代碼

  <DataGrid ItemsSource="{Binding StatusItems}"  Name="DataGridUploadingRevitFiles" Margin="5"
                          IsReadOnly="False" SelectionMode="Single" CanUserAddRows="True" 
                          AutoGenerateColumns="False" SelectionUnit="Cell" Height="Auto">

                <DataGrid.Columns>                   
                    <DataGridTemplateColumn Header="Update" Width=".5*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>

                                <CheckBox Width="200"
                                 IsChecked="{Binding Path=IsUpdateAbleFile, 
                                 Mode=TwoWay, 
                                 UpdateSourceTrigger=PropertyChanged}"/>

                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

                </DataGrid.Columns>


  </DataGrid>

型號[ FamilyStatusItem.cs ]

public class FamilyStatusItem : INotifyPropertyChanged
{   

    private bool _isUpdateAbleFile;
    public bool IsUpdateAbleFile
    {
        get => this._isUpdateAbleFile;
        private set
        {
            this._isUpdateAbleFile = value;
            OnPropertyChanged();
        }
    }


    public event PropertyChangedEventHandler PropertyChanged;
    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

ViewModel [ FamilyStatusViewItem.cs ]

public class FamilyStatusViewItem
{
    public ObservableCollection<FamilyStatusItem> StatusItems { get; set; }
    public FamilyStatusViewItem()
    {
        this.StatusItems = new ObservableCollection<FamilyStatusItem>();
    }
}

您的設置器是私人的,這意味着它不能從外部調用。 因此,當您勾選或取消選中該復選框時,將無法調用該復選框,並且該屬性保留舊狀態。

解決方案:刪除私有修飾符。

嘗試使用public二傳手

public bool IsUpdateAbleFile
{
    get => this._isUpdateAbleFile;
    set
    {
        this._isUpdateAbleFile = value;
        OnPropertyChanged();
    }
}

您有私人二傳手

private set
{
    this._isUpdateAbleFile = value;
    OnPropertyChanged();
}

將此更改為公開,然后它應該起作用。

暫無
暫無

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

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