ComboBox显示错误的字符串列表
在XAML中,我将ComboBox
绑定到一个字符串的List
,我在我的静态类中称为Settings
。 这里的XAML:ComboBox显示错误的字符串列表
<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
。
我该如何做到这一点?
您不需要为此使用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>
谢谢,它的工作完美。但是,老实说,我不明白为什么这个工作,我的代码没有。我在理解绑定方面存在问题 - 我不知道我应该在Source中放置什么,我应该在Path中放置什么。 – Loreno
你不需要的物品控制这个才能正常工作。在StackPanel中只需要一个组合框即可工作。检查下面的代码:
<Grid>
<StackPanel Orientation="Horizontal" DataContext="x:Static loc:Settings">
<ComboBox VerticalAlignment="Top" ItemsSource="{x:Static loc:Settings.Tags}" />
</StackPanel>
</Grid>
'' – ASh
字符串是枚举的,即whay你看到每个字符的线。我删除了我的答案,赞成从@ S.Akbari回答,只是想补充说明 – Sascha