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

相反,我得到这个:

enter image description here

我送四ComboBoxes和他们每个人包括我把我的名单标签的信件。所以第一个ComboBox有字母:H-e-a-d-d-e-r-1,第二个有H-e-a-d-d-e-r-2,依此类推。

我宁愿要一个包含全部四个标签的ComboBox

我该如何做到这一点?

+1

'' – ASh

+1

字符串是枚举的,即whay你看到每个字符的线。我删除了我的答案,赞成从@ S.Akbari回答,只是想补充说明 – Sascha

您不需要为此使用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> 
+0

谢谢,它的工作完美。但是,老实说,我不明白为什么这个工作,我的代码没有。我在理解绑定方面存在问题 - 我不知道我应该在Source中放置什么,我应该在Path中放置什么。 – Loreno

你不需要的物品控制这个才能正常工作。在StackPanel中只需要一个组合框即可工作。检查下面的代码:

<Grid> 
    <StackPanel Orientation="Horizontal" DataContext="x:Static loc:Settings"> 
     <ComboBox VerticalAlignment="Top" ItemsSource="{x:Static loc:Settings.Tags}" /> 
    </StackPanel> 
</Grid>