【问题标题】:Silverlight: Separator within listbox?Silverlight:列表框中的分隔符?
【发布时间】:2011-04-23 13:06:31
【问题描述】:

我有一个列表框,里面有几个项目。我想以编程方式将分隔栏插入列表框中。这可能吗?

MSDN 提到了 Separator 控件,但当我尝试实例化一个控件时,Visual Studio 无法识别它。

我正在使用 Silverlight 4。

【问题讨论】:

    标签: c# silverlight


    【解决方案1】:

    您所指的分隔符控件在 WPF 中,从我在文档中看到的内容在 Silverlight 中不受支持。

    我会通过模板处理这个问题。使用项目的表示和分隔符的第二表示设置您的模板,然后将每个的可见性绑定到数据对象上的 IsSeparator 标志。

    然后您需要做的就是创建一个虚拟对象,并将 IsSeparator 标志设置为 true,以获取列表中的新项目。

    【讨论】:

      【解决方案2】:

      见: http://manfredlange.blogspot.com/2009/04/separator-for-menu-item-in-xaml-wpf.html

      我在 silverlight 4 中使用它,我只是从工具箱中拖放,它为我添加了对工具包的引用:

      xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
      

      我是这样使用的:

      <toolkit:Separator Margin="15"/>
      

      【讨论】:

        【解决方案3】:

        我做了一个类似于 James 的修复。在绑定列表框的 TableModel 上添加一个布尔字段。

        我对按类型分组的数据有额外要求,我将其留在下面的 LINQ 查询中。如果您不需要这个,您可以使用 allData.Count 代替 numDataTypes。我的布尔值被称为 IsLastItem 并填充了:

        int numDataTypes = allData.Select(o => o.Type).Distinct().Count();
        IEnumerable<TableModel> ByTypes = allData
                      .GroupBy(o => o.Type)
                      .Select((g, index) => new TableModel()
                      {
                        ...
                        IsLastItem = index == (numDataTypes - 1),
                      });
        

        然后在 ListBox(或 ItemsControl)中,我使用了布尔到可见性转换器(类似于此处发布的 Silverlight 4: how to switch control visibility):

        <ItemsControl ItemsSource="{Binding ByTypes}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                        ...
        
                        <!-- Seperator between list items -->
                        <Rectangle Grid.Row="3" Height="20" Visibility="{Binding IsLastItem, Converter={StaticResource VisibileWhenFalseConverter}}" />
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多