在XAML中,我将ComboBox
绑定到名为List
的{{1}}个字符串,我在名为Tags
的静态类中使用了该字符串。
这是XAML:
Settings
这是我的<Window x:Class="CSV_To_Tags_App.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:loc="clr-namespace:CSV_To_Tags_App"
Title="Window2" Height="435" Width="566">
<Grid>
<StackPanel Orientation="Horizontal" DataContext="x:Static loc:Settings">
<ItemsControl ItemsSource="{x:Static loc:Settings.Tags}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
</Window>
课程:
Settings
所以,我想要一个显示public static class Settings
{
public static List<string> Tags = new List<string>() { "Header1", "Header2", "Header3", "Header4" };
}
列表的combobox
。
我使用Tags
,因为稍后我必须显示更大的对象列表,并且每个对象旁边都会显示DataTemplate
。
相反,我得到了这个:
我得到四个ComboBox
,每个ComboBoxes
都包含我放在列表中的标签字母。因此,第一个ComboBox
包含字母H-e-a-d-d-e-r-1
,第二个包含H-e-a-d-d-e-r-2
,依此类推。
我宁愿想要一个包含所有四个标签的ComboBox
。
我怎样才能做到这一点?
答案 0 :(得分:2)
出于此目的,您无需使用StackPanel
。您只需要一个ComboBox
并将其设置为ItemsSource
。像这样:
<ComboBox ItemsSource="{x:Static loc:Settings.Tags}" VerticalAlignment="Top"/>
如果您想使用DataTemplate
,可以像这样使用它:
<ComboBox ItemsSource="{x:Static loc:Settings.Tags}" VerticalAlignment="Top">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
答案 1 :(得分:1)
您无需物品控制即可正常工作。只需一个组合框就可以在StackPanel内部工作了。检查以下代码:
<Grid>
<StackPanel Orientation="Horizontal" DataContext="x:Static loc:Settings">
<ComboBox VerticalAlignment="Top" ItemsSource="{x:Static loc:Settings.Tags}" />
</StackPanel>
</Grid>