【问题标题】:Text separator between ListView in WPFWPF中ListView之间的文本分隔符
【发布时间】:2013-12-03 03:53:53
【问题描述】:

我正在尝试从 ListView 中获取以下信息:

Text | Text | Text

我已经通过以下方式实现了垂直方向

<ItemsPanelTemplate><StackPanel Orientation="Horizontal"/></ItemsPanelTemplate>

每个部分(文本)都是绑定到 MVVM 中的字符串的 TextBlock。 最好之间的线应该只是规则的垂直条。

对于实现这些垂直条的任何提示??

【问题讨论】:

标签: wpf xaml listview


【解决方案1】:

How can a separator be added between items in an ItemsControl 的副本,试试这个:

<ItemsControl Name="theListBox">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock x:Name="seperator" Text=" | "/>
                    <TextBlock Text="{Binding}"/>
                </StackPanel>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}">
                        <Setter Property="Visibility" TargetName="seperator" Value="Collapsed"/>
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

【讨论】:

    【解决方案2】:

    如果你已经实现在两个项目之间显示分隔符,你可以有一个转换器说LastItemInContainerToVisibilityConverter,它将绑定到分隔符的可见性,使separator collapsed for last itemvisible for all other items

    假设您使用Rectangle 来显示项目之间的分隔 -

    <ItemsControl.ItemTemplate>
       <DataTemplate>
          <StackPanel Orientation="Horizontal">
             <TextBlock Text="{Binding}"/>
             <Rectangle Visibility="{Binding RelativeSource={RelativeSource
                                       Mode=FindAncestor, AncestorType=ListViewItem},
                                      Converter={StaticResource 
                                       LastItemInContainerToVisibilityConverter}}"/>
           </StackPanel>
       </DataTemplate>
    </ItemsControl.ItemTemplate>
    

    这是你的转换器,如果它是集合中的最后一项,它将返回 -

    public class LastItemInContainerToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter,
                              CultureInfo culture)
        {
           DependencyObject item = (DependencyObject)value;
           ItemsControl ic = ItemsControl.ItemsControlFromItemContainer(item);
    
           return (ic.ItemContainerGenerator.IndexFromContainer(item)
                == ic.Items.Count - 1) ? Visibility.Collapsed : Visibility.Visible;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter,
                                  CultureInfo culture)
        {
           throw new NotImplementedException();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 2010-10-27
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多