У меня есть модель, которая реализует INotifyPropertyChanged
. В этом представленииModel является свойством, называемым SubGroupingView
. Это свойство привязано к выбранному элементу поля со списком. Когда я меняю поле со списком, свойство source обновляется нормально, но когда я изменяю свойство источника или когда инициализируется элемент управления, combobox.selectedItem
НЕ отражает то, что существует в свойстве.
Вот код, чтобы вы начали:Combobox SelectedItem не обновляется при изменении источника
<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">
Свойство поднимает PropertyChanged
событие и выход TraceSource показывает мне, что связывание обнаружен его и передал значение, его только что выпадающий не отражает его , Любые идеи были бы очень желанными!
EDIT:
выход из источника трассировки заключается в следующем:
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)
, и теперь он работает хорошо. Спасибо за всю твою помощь!
Из интереса попробуйте установить ItemsSource перед SelectedItem в вашем заявлении XAML. –
R u преследует меня матовым? нет удачи там – TerrorAustralis
Интересный ... вы могли бы опубликовать фрагмент вашего ViewModel (в частности, определение SubGroupingView)? – Pwninstein