Tôi có chế độ xem thực hiện INotifyPropertyChanged
. Trên chế độ xem nàyMô hình là thuộc tính được gọi là SubGroupingView
. Thuộc tính này được gắn với mục được chọn của một hộp tổ hợp. Khi tôi thay đổi hộp kết hợp, thuộc tính nguồn đang được cập nhật tốt, nhưng khi tôi thay đổi thuộc tính nguồn hoặc khi điều khiển được khởi tạo, thì combobox.selectedItem
KHÔNG phản ánh những gì tồn tại trong thuộc tính.
Dưới đây là một số mã để giúp bạn bắt đầu:Combobox SelectedItem không cập nhật khi thay đổi nguồn
<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">
Khu nghỉ dưỡng làm tăng sự kiện PropertyChanged
và đầu ra TraceSource cho tôi thấy rằng các ràng buộc phát hiện nó và chuyển giao các giá trị, nó chỉ là combobox không phản ánh nó . Mọi ý tưởng sẽ được chào đón nhiều nhất!
EDIT:
đầu ra từ nguồn dấu vết là thế này:
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)
Đây là mã cho các tài sản nguồn:
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");
}
}
}
Lưu ý: ViewModelBase
thực hiện INotifyPropertyChange
.
ĐÁP
Tôi quá tải ==,! = Nhà khai thác, GetHashCode()
, và Equals(object)
và bây giờ nó đang làm việc độc đáo. Cảm ơn tất cả sự giúp đỡ của bạn!
Không quan tâm, hãy thử đặt ItemsSource trước SelectedItem trong khai báo XAML của bạn ở đó. –
R u rình rập tôi mờ? không có may mắn có – TerrorAustralis
Thú vị ... bạn có thể có thể đăng một đoạn của ViewModel của bạn (cụ thể là định nghĩa của SubGroupingView)? – Pwninstein