gpt4 book ai didi

c# - 在另一个中设置3个不同的 “observableCollection”?

转载 作者:行者123 更新时间:2023-12-03 10:31:58 26 4
gpt4 key购买 nike

我在MVVM中工作,我发现了这种模式。

我想做的事:

2个组合框:
如果组合框1显示A,我希望组合框2显示“observableCollectionA”列表
如果组合框1显示B,我希望组合框2显示“observableCollectionB”
如果组合框1显示C,我希望组合框2显示“observableCollectionC”

我完成了结构,它与列表一起使用,现在我必须对对象成功;

这是在组合框中采用选定值“SelectedValue”并将其发送到要显示的结果的代码。这是我要比较组合框中的值(例如:“公司”)并进行比较以获取公司列表并在第二个组合框中显示的地方:

    private string _SelectedListValue;
public string SelectedListValue
{
get
{
return _SelectedListValue;
}
set
{
if (value != _SelectedListValue)
{
_SelectedListValue = value;
RaisePropertyChanged(nameof(SelectedListValue));
ResultList = new ObservableCollection<string>();

if (value == "Company")
{
_ResultList.Add("Hello"); //Test, it works
_ResultList = Company;
}
else if(value == "Services")
{
_ResultList.Add("Not Hello");//test, it Works
_ResultList = Services;
}
}
}
}

对于第二个组合框:
    private ObservableCollection<string> _ResultList;
public ObservableCollection<string> ResultList
{
get
{
return _ResultList;
}
set
{
if (value != _ResultList)
{
_ResultList = value;
RaisePropertyChanged(nameof(ResultList));
}
}
}

这是我的数据:
        Company = new ObservableCollection<Company>((await _dataService.GetCompany().ConfigureAwait(false)));
Services = await _dataService.GetServicesAsync(true).ConfigureAwait(false);
Sections = await _dataService.GetSectionsAsync(_dataService.ParamGlobaux.IDCompany).ConfigureAwait(false);

我想根据自己的条件,如果“SelectedListValue”的值为“Company”,则“_ResultList”加载ObservableCollection-Company-

我希望我很清楚,我不知道最好的解决方案是什么,我真的很想在这个周末之前完成此工作。

编辑:(“服务”数据类型为“ObservableCollection-Services-”,公司为“ObservableCollection-Company-”)

预先感谢您的建议!

最佳答案

您可以使用DataTrigger在选择cmb1时设置正确的ItemsSource,如果Cmb1SelectedItem更改了其更改,则Cmb2 Itemsource无需在VM中维护

     <ComboBox Name="Cmb1" ItemsSource="{Binding Cmb1List}" SelectedItem="{Binding Cmb1SelectedItem}">

</ComboBox>

<ComboBox Name="Cmb2" >
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding ObservableCollectionC}"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Cmb1SelectedItem}" Value="A">
<Setter Property="ItemsSource" Value="{Binding ObservableCollectionA}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Cmb1SelectedItem}" Value="B">
<Setter Property="ItemsSource" Value="{Binding ObservableCollectionB}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>

关于c# - 在另一个中设置3个不同的 “observableCollection”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55762919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com