1
我有2個組合框,第一個選定項目需要更改第二個項目源,但它沒有。WPF,MVVM使用另一個組合框選定項目填充組合框
這是我的XAML ...
<ComboBox Grid.Column="1" ItemsSource="{Binding StationsList}" DisplayMemberPath="Value" SelectedValuePath="Key" SelectedValue="{Binding Path=StationTarget, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<ComboBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding MonitorsList}" DisplayMemberPath="Value" SelectedValuePath="Key" SelectedValue="{Binding Path=MonitorTarget, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
這是相關屬性和視圖模型的功能...
public ObservableCollection<StationViewModel> Stations
{
get { return _stations; }
set
{
if (_stations == value)
return;
_stations = value;
SetStationList();
OnPropertyChanged("Stations");
}
}
public Dictionary<int,string> StationsList
{
get
{
return _stationsList;
}
set
{
if (_stationsList == null)
return;
_stationsList = value;
OnPropertyChanged("StationsList");
}
}
public ObservableCollection<MonitorViewModel> Monitors
{
get { return _monitors; }
set
{
if (_monitors == value)
return;
_monitors = value;
SetMonitorsList();
OnPropertyChanged("Monitors");
}
}
public Dictionary<int, string> MonitorsList
{
get { return _monitorsList; }
}
public int StationTarget
{
get
{
return _mc.StationTarget ;
}
set
{
if (_mc.StationTarget == value)
return;
_mc.StationTarget = value;
SetMonitorsList();
SetStatus();
OnPropertyChanged("StationTarget");
OnPropertyChanged("MonitorsList");
}
}
private void SetStationList()
{
_stationsList.Add(0,"OFF");
foreach (StationViewModel station in Stations)
_stationsList.Add(Convert.ToInt32(station.SerialCode),station.StationName);
}
private void SetMonitorsList()
{
_monitorsList.Clear();
_monitorsList.Add(0, "OFF");
_filterdMonitors.Clear();
_filterdMonitors = _monitors.Where(x => x.StationSerial == StationTarget).ToObservableCollection<MonitorViewModel>();
foreach (MonitorViewModel monitor in _filterdMonitors)
_monitorsList.Add(Convert.ToInt32(monitor.Channel), monitor.MonitorName);
}
我的2個來源是Dictionary<int,string>
...
如果我不點擊(點擊沒有改變選擇的項目,只需點擊)組合框,源列表是好的。當我點擊它,列表根本沒有改變..
謝謝你的回答。我做了你告訴我的事情,它仍然以同樣的方式行事。有沒有我想念的東西或別的東西? –
* [...]它仍然採用相同的方式。*我希望,如果你真的改變了某些東西,那不是真的。 ; o)虛擬機的狀態是否像您期望的那樣,或者可能是不正確的?你是否收到任何'BindingExpression'錯誤? – DHN