gpt4 book ai didi

c# - WPF复选框IsChecked两种方式绑定(bind)不起作用

转载 作者:行者123 更新时间:2023-12-03 10:52:18 26 4
gpt4 key购买 nike

我为两种方式绑定(bind)编写的以下代码。当代码中的任何内容发生更改时,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));
}
}

查看模型 [ FamilyStatusViewItem.cs ]
public class FamilyStatusViewItem
{
public ObservableCollection<FamilyStatusItem> StatusItems { get; set; }
public FamilyStatusViewItem()
{
this.StatusItems = new ObservableCollection<FamilyStatusItem>();
}
}

最佳答案

你的 setter 是私有(private)的,这意味着它不能从外部调用。因此,当您勾选或取消勾选复选框时,它不能被调用并且属性保留旧状态。

解决方案:删除私有(private)修饰符。

关于c# - WPF复选框IsChecked两种方式绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48860867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com