2017-08-24 9 views
0

私はTagが、私はその後、ListViewためItemsSourceとしてこれを使用する親リストからどのように値にバインドするのですか?

class Tag { 
    public string Name { get; set; } 
    public List<int, int> Values { get; set; } 
} 

である私のViewModel

public ObservableCollection<Tag> AllTags { get; set; } 

を通じて公開されたプロパティがあります。

<ListView ItemTemplate="{StaticResource TagListTemplate}" ItemsSource=" 
{Binding AllTags}"> 
</ListView> 

TagListTemplate 内を私はその後、に2番目のリストをバインドします:

<DataTemplate x:Key="TagListTemplate"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="{Binding TagName}"/> 
     <ItemsControl Grid.Column="1" ItemsSource="{Binding Values}"> 
     </ItemsControl> 
    </Grid> 
</DataTemplate> 

現在の出力は次のようになります。

Name [value, value] 
    [value, value] 
    [value, value] 
Name2 [value,value] 
     [value,value] 
     [value,value] 

と私は、出力は次のようになりたいと思います:

Name [value, value] 
Name [value, value] 
Name [value, value] 
Name2 [value,value] 
Name2 [value,value] 
Name2 [value,value] 

私はItemsControlTextblockを移動することができますどのようにすべての要素に名前の繰り返しがありますか? AncestorTypeを使用しようとしましたが、正常に動作しませんでした。このような

+0

少し質問を変更しましたが、抽象化しようとしましたが、それは役に立たないと思います。まだ不明な点がある場合は教えてください – tgrass12

+0

あなたのリストビューコードを間にすべて投稿できますか? –

+0

再度フルテンプレート – tgrass12

答えて

0

何かがトリックを行う必要があります。

<ListView ItemsSource="{Binding AllTags}"> 
    <ListView.ItemTemplate> 
     <DataTemplate DataType="{x:Type local:Tag}"> 

      <ItemsControl ItemsSource="{Binding Values}"> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate DataType="{x:Type local:ValuePair}"> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding Path=DataContext.Name, RelativeSource={RelativeSource AncestorType=ItemsControl}}"/> 
          <TextBlock Text="{Binding Value1}"/> 
          <TextBlock Text="{Binding Value2}"/> 
         </StackPanel> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 

     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

お知らせこのバインディング:相対的なバインディングと

{Binding Path=DataContext.Name, RelativeSource={RelativeSource AncestorType=ItemsControl}} 

作業、あなたが明示的にプロパティの前のDataContextを指定する必要があります!

注:コードをdouble int値でコンパイルできないため、このためにダミータイプのValuePairを作成しました。これはあなたの正確なコードではないと思いますので、問題ではありません。

+0

を含むように更新されました。大変感謝しています。 – tgrass12

関連する問題