Я новичок в MVVM в WPF, и у меня возникает следующая проблема:
Я пытаюсь получить два ComboBox, каждый из которых привязан к тому же свойству ObservableCollection<TwoProperties> DList
, что и ItemsSource
, и синхронизирован SelectedItem
, поэтому я написал это в своем XAML
<ComboBox ItemsSource="{Binding DList}" DisplayMemberPath="Property1" SelectedItem="{Binding SelectedD}" />
<ComboBox ItemsSource="{Binding DList}" DisplayMemberPath="Property2" SelectedItem="{Binding SelectedD}" />
с этой моделью представления
public class ViewModel : INotifyPropertyChanged
{
private ObservableCollection<TwoProperties> _dList =
new ObservableCollection<TwoProperties> {
new TwoProperties(1,"one"),
new TwoProperties(2,"two")
};
public ObservableCollection<TwoProperties> DList
{
get { return _dList; }
set { _dList = value; OnPropertyChanged("DList"); }
}
private TwoProperties _selectedD;
public TwoProperties SelectedD
{
get { return _selectedD; }
set { _selectedD = value; OnPropertyChanged("SelectedD"); }
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
где
public class TwoProperties
{
public double Property1 { get; set; }
public string Property2 { get; set; }
public TwoProperties (double p1, string p2)
{
Property1 = p1;
Property2 = p2;
}
}
Я также хотел бы иметь два текстовых поля, которыеотобразить свойства текущего SelectedItem
синхронизированных комбинированных списков.Свойства Property1
и Property2
из SelectedD
должны быть редактируемыми , однако ObservableCollection<TwoProperties> _dList
должен оставаться постоянным / только для чтения и не изменять свои значения.
<TextBox Text="{Binding SelectedD.Property1}" />
<TextBox Text="{Binding SelectedD.Property2}" />
Но , когда я редактирую TextBoxes и, следовательно, SelectedD, также _dList меняет свои значения , что не то, что я хочу.
Я надеюсь, что смогу объяснитьмоя проблема.Я уверен, что упускаю что-то простое здесь.