2017-09-19 16 views
-2

ItemsControlの各要素の後にコンマを追加しようとしています。このSOの投稿に続いて Make a WPF ListBox comma separate values ...私はコンバータを作成し、XAMLコードでそれを使用しようとしていますが、私は何か間違ったことをしています。 にはText=","が含まれており、コンバータを使用して自身のVisibilityを制御することになっています。項目をコンマで区切ります。ItemsControl

<ItemsControl ItemsSource="{Binding RecipientsNames}" HorizontalContentAlignment="Left"> 

    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 

    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 

       <Button x:Name="btnContact" Click="BtnContact_Click" 
         Width="Auto" Height="14" Padding="0" BorderThickness="0" HorizontalAlignment="Left" VerticalAlignment="Top"> 
        <TextBlock Text="{Binding Path=Name}" FontSize="12" Margin="0 -2 0 -2"/> 
       </Button> 

       <TextBlock Text="," FontSize="12" Margin="0 -2 6 -2" 
        Visibility="{Binding RelativeSource={RelativeSource 
        Mode=FindAncestor, 
        AncestorType=ItemsControlItem}, 
        Converter={StaticResource IsLastItemInContainerConverter}}"/> 

      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 

</ItemsControl> 

答えて

1

これを試してみてください:

<TextBlock Text="," FontSize="12" Margin="0 -2 6 -2" 
        Visibility="{Binding RelativeSource={RelativeSource 
        Mode=FindAncestor, 
        AncestorType=ContentPresenter}, 
        Converter={StaticResource IsLastItemInContainerConverter}}"/> 

public class IsLastItemInContainerConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     FrameworkElement item = (FrameworkElement)value; 
     ItemsControl ic = ItemsControl.ItemsControlFromItemContainer(item); 

     return ic.Items.IndexOf(item.DataContext) == ic.Items.Count - 1 ? Visibility.Collapsed : Visibility.Visible; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
関連する問題