gpt4 book ai didi

wpf - 源更改时组合框 SelectedItem 不更新

转载 作者:行者123 更新时间:2023-12-04 05:15:09 27 4
gpt4 key购买 nike

我有一个实现 INotifyPropertyChanged 的 View 模型.在这个 viewModel 上有一个名为 SubGroupingView 的属性。 .此属性绑定(bind)到组合框的选定项。当我更改组合框时,源属性更新正常,但是当我更改源属性或初始化控件时,combobox.selectedItem不反射(reflect)属性(property)中存在的内容。
以下是一些帮助您入门的代码:

<ComboBox Grid.Column="3" Grid.Row="1" 
Margin="0,1,4,1"
SelectedItem="{Binding Path=SubGroupingView, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, diag:PresentationTraceSources.TraceLevel=High}"
ItemsSource="{Binding Columns}"
DisplayMemberPath="DisplayName">

属性(property)提高 PropertyChanged事件和 TraceSource 输出显示绑定(bind)检测到它并传输了值,只是组合框没有反射(reflect)它。任何想法都将受到欢迎!

编辑:
跟踪源的输出是这样的:
System.Windows.Data Warning: 91 : BindingExpression (hash=23631369): Got PropertyChanged event from ReportViewModel (hash=52844413)  
System.Windows.Data Warning: 97 : BindingExpression (hash=23631369): GetValue at level 0 from ReportViewModel (hash=52844413) using RuntimePropertyInfo(SubGroupingView): DataColumnViewModel (hash=58231222)
System.Windows.Data Warning: 76 : BindingExpression (hash=23631369): TransferValue - got raw value DataColumnViewModel (hash=58231222)
System.Windows.Data Warning: 80 : BindingExpression (hash=23631369): TransferValue - implicit converter produced DataColumnViewModel (hash=58231222)
System.Windows.Data Warning: 85 : BindingExpression (hash=23631369): TransferValue - using final value DataColumnViewModel (hash=58231222)

以下是源属性的代码:
public class ReportViewModel : ViewModelBase, IReportTemplate
{
public DataColumnViewModel SubGroupingView
{
get
{
return GetViewModel(_report.SubGrouping);
}
set
{
if (_report.SubGrouping == value.ColumnName)
return;
_report.SubGrouping = value.ColumnName;
RefreshDataSeries();
base.OnPropertyChanged("SubGroupingView");
base.OnPropertyChanged("IsReady");
}

}
}

注: ViewModelBase实现 INotifyPropertyChange .

回答
我重载了 ==、!= 运算符、 GetHashCode() , 和 Equals(object)现在它运行良好。感谢您所有的帮助!

最佳答案

从您的 SubGroupingView 返回的对象必须“等于” ComboBox.Items 中的对象之一(这意味着它必须在您的 Columns 集合中)。因此,如果您执行“a.Equals(b)”,则需要返回 true。

如果它们在功能上相同,但在比较时没有返回 true,那么这就是你的问题。您将需要返回相同的对象,或覆盖 Equals 方法(可能还有 == 和 != 运算符)。

如果这是您的问题,则与此 question 中的问题相同.

关于wpf - 源更改时组合框 SelectedItem 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3499301/

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