我环顾四周,发现了一些东西,现在卡在下拉区域中显示两列的组合框上。我有一个可用的 xaml 主题,并且组合框“样式”已定义并且在整个过程中都按预期运行良好,所以这部分没问题。
现在,我有一个组合框,我需要显示两个值,将其视为下拉列表的状态缩写和状态名称,来自项目的 DataTable.DefaultView 绑定源。
如果我有
<my:cboStates TextSearch.TextPath="StateAbbrev">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" TextSearch.Text="{Binding Path=StateAbbrev}">
<TextBlock Text="{Binding Path=StateAbbrev}"/>
<TextBlock Text="{Binding Path=FullStateName}" Margin="10 0"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</my:cboStates>
这行得通。现在,我如何/在哪里卡住了......现在,我希望在 5 个不同的表单上使用相同的功能,并且所有表单都显示相同的内容,并且如果曾经更改(不是这个,而是其他多列组合框),我不想一直把它直接放在表单的 XAML 文件中。
我希望将其放入主题的资源字典文件中,然后一遍又一遍地重复使用该“样式”。说得通。但是,当我这样做并且绑定到数据表时,我在尝试作为样式时得到的唯一结果是下拉菜单显示的值
System.Data.DataRowView
System.Data.DataRowView
System.Data.DataRowView
System.Data.DataRowView
而不是实际的 2 列。这是我在“主题”资源字典中的内容。
<DataTemplate x:Key="myStateComboTemplate" >
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Path=StateAbbrev}"/>
<TextBlock Text="{Binding Path=FullStateName}"/>
</StackPanel>
</DataTemplate>
<Style x:Key="StyleMyStatesCombobox" TargetType="{x:Type ComboBox}"
BasedOn="{StaticResource MyOtherWorkingComboBoxStyle}" >
<Setter Property="TextSearch.TextPath" Value="{Binding Path=StateAbbrev}" />
<Setter Property="ItemTemplate" Value="{StaticResource myStateComboTemplate}" />
</Style>
因此,如果我在表单上创建了我的“cboStates”类的两个实例,并将一个设置为第一个列出的显式样式,第二个基于“样式”设置,则第二个仅显示重复的 System.Data 失败.DataRowView 条目,而不是实际的数据内容。
我错过了什么。
所以,澄清我在寻找什么......国家......前数据
AL Alabama
AK Alaska
AZ Arizona
AR Arkansas
CA California
CO Colorado
CT Connecticut
DE Delaware
我希望组合框显示缩写的 AL、AK、AZ 等和更窄的组合框。这也将是返回时的“SelectedValue”。
实际的下拉菜单将显示上面列出的数据,显示缩写和状态的详细描述。
所需组合框的样本