C# 组合框的WPF不同项目资源
我想将布尔值、对象列表和枚举值绑定到组合框。根据datagrid的列弹出一个对话框,我加载一个对象列表(Object1.Name..ObjectN.Name是名称,ObjectD1..ObjectDN是Id),我加载一个EnumValue列表(EnumItem1..EnumItemN是名称,EnumValue1..EnumValueN是Id)或布尔值列表(Yes/No是名称,0/1是Id)C# 组合框的WPF不同项目资源,c#,wpf,xaml,combobox,C#,Wpf,Xaml,Combobox,我想将布尔值、对象列表和枚举值绑定到组合框。根据datagrid的列弹出一个对话框,我加载一个对象列表(Object1.Name..ObjectN.Name是名称,ObjectD1..ObjectDN是Id),我加载一个EnumValue列表(EnumItem1..EnumItemN是名称,EnumValue1..EnumValueN是Id)或布尔值列表(Yes/No是名称,0/1是Id) <Style Target={x:Type ComboBox}> <Style.
<Style Target={x:Type ComboBox}>
<Style.Triggers>
<DataTrigger Binding="{Path=RowData.Row.PropertyToBeChecked}" Value="Value1">
<Setter Property="DataSource" Value="{Binding Path=ListCorrespondingToValue1}"/>
</DataTrigger>
<DataTrigger Binding="{Path=RowData.Row.PropertyToBeChecked}" Value="Value2">
<Setter Property="DataSource" Value="{Binding Path=ListCorrespondingToValue2}"/>
</DataTrigger>
</Style.Triggers>
</Style>
我怎么做?我是否需要在组合框的ViewModel中实现一个wrap类?(这个wrap类将获得对象列表、布尔值列表yes/no、枚举值列表)。好吧,对我来说,我认为您可以通过设置组合框数据源的触发器来实现您的目标。看起来像
<Style Target={x:Type ComboBox}>
<Style Target={x:Type ComboBox}>
<Style.Triggers>
<DataTrigger Binding="{Path=RowData.Row.PropertyToBeChecked}" Value="Value1">
<Setter Property="DataSource" Value="{Binding Path=ListCorrespondingToValue1}"/>
</DataTrigger>
<DataTrigger Binding="{Path=RowData.Row.PropertyToBeChecked}" Value="Value2">
<Setter Property="DataSource" Value="{Binding Path=ListCorrespondingToValue2}"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style Target={x:Type ComboBox}>
<Style.Triggers>
<DataTrigger Binding="{Path=RowData.Row.PropertyToBeChecked}" Value="Value1">
<Setter Property="DataSource" Value="{Binding Path=ListCorrespondingToValue1}"/>
</DataTrigger>
<DataTrigger Binding="{Path=RowData.Row.PropertyToBeChecked}" Value="Value2">
<Setter Property="DataSource" Value="{Binding Path=ListCorrespondingToValue2}"/>
</DataTrigger>
</Style.Triggers>
</Style>
您的选择模式是什么?是横排还是手机?嗨,埃兰,这是手机模式。嗨,埃兰,谢谢,但也许你不明白我的意思。我在我的帖子中添加了一些信息。通过手机收听,你可以获得该栏目,然后你就会知道选择了哪个栏目。很酷,谢谢。但这意味着,对于这种列表,我应该在ViewModel中有一个属性。拥有一个总是提供正确值的属性不是更好吗?这并不容易,因为您可以将数据源绑定到一个且仅一个属性。我无法告诉您如何处理包装两种类型列表的对象。是的,您必须在viewModel列表和list中定义两个不同的属性,或者您只需在枚举中添加yes或no,并根据您的datagrid列使用类似linq的list=list刷新数据源。其中(l=>l.val!=enum.yes&&l.val!=enum.No)好的,你说得对。我发现很难将组合框绑定到一个且只有一个属性。我将采用这种方式。谢谢!