मैं एक viewmodel जो INotifyPropertyChanged
को लागू किया है। इस दृश्य पर मॉडल SubGroupingView
नामक एक संपत्ति है। यह संपत्ति कॉम्बो बॉक्स के चयनित आइटम से जुड़ी है। जब मैं कॉम्बो बॉक्स बदलता हूं, तो स्रोत प्रॉपर्टी को ठीक से अपडेट किया जा रहा है, लेकिन जब मैं स्रोत प्रॉपर्टी बदलता हूं या जब नियंत्रण शुरू होता है, तो 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 उत्पादन को जन्म देती है, इसकी सिर्फ इतना है कि बता गया यह दर्शाती नहीं है । किसी भी विचार का स्वागत किया जाएगा!
संपादित करें: ट्रेस स्रोत से
उत्पादन यह है:
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)
और अब यह अच्छी तरह से काम कर रहा है। आपकी मदद के लिए धन्यवाद!
ब्याज से, अपने एक्सएएमएल घोषणा में चयनित इटैम से पहले आइटमसोर्स सेट करने का प्रयास करें। –
आर तुम मुझे मैट stalking? कोई भाग्य नहीं – TerrorAustralis
दिलचस्प ... क्या आप संभवतः अपने व्यूमोडेल का एक स्निपेट पोस्ट कर सकते हैं (विशेष रूप से सब ग्रुपिंग व्यू की परिभाषा)? – Pwninstein