2016-08-23 12 views
1

XAMLでは、という静的クラスにあるTagsという文字列のListという文字列にComboBoxをバインドしました。ここ はXAMLです:Anはここに私のSettingsクラスだ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> 

:だから

public static class Settings 
{ 
    public static List<string> Tags = new List<string>() { "Header1", "Header2", "Header3", "Header4" }; 
} 

、私はTagsのリストを表示していましたcomboboxを取得したいのですが。 私はDataTemplateを使用しています。後でもっと大きなオブジェクトのリストを表示する必要があり、そのそれぞれの隣にComboBoxが表示されるためです。私は4 ComboBoxesを取得し、それらのそれぞれが、私は私のリストに入れたタグの文字が含まれてい

enter image description here

代わりに、私はこれを取得しています。そのため、最初のComboBoxは、H-e-a-d-d-e-r-1の文字を持ち、2番目の文字はH-e-a-d-d-e-r-2です。

私はむしろ1つのComboBoxを4つのタグすべてを含むようにしたいと思います。

どうすれば実現できますか?

+1

'<コンボボックスのItemsSource = "{X:静的LOC:Settings.Tags}"/>' – ASh

+1

文字列を使用すると、各文字の行を参照してくださいwhayつまり、可算です。私は@ S.Abbariからの回答に賛成して私の答えを削除しました。この説明を追加したかっただけです – Sascha

答えて

2

この目的でStackPanelを使用する必要はありません。 ComboBoxが1つ必要です。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

ありがとう、それは完璧に働いていました。しかし、正直言って私はなぜこれが動作し、私のコードは理解しません。私は束縛の理解に問題があります。私は何をソースに入れるべきか、パスに何を入れなければならないのか分かりません。 – Loreno

1

あなたは、これが適切に動作するためにアイテムをコントロールする必要はありません。 StackPanelの内部ではコンボボックスで十分です。コードの下にチェック:

<Grid> 
    <StackPanel Orientation="Horizontal" DataContext="x:Static loc:Settings"> 
     <ComboBox VerticalAlignment="Top" ItemsSource="{x:Static loc:Settings.Tags}" /> 
    </StackPanel> 
</Grid> 
関連する問題