2009-10-27 58 views
1

我想知道是否有一个Silverlight控件,允许我在每对项目之间使用分隔符水平显示项目列表。如何使用分隔符在Silverlight中水平显示项目列表?

例如,假设这是我的产品清单。

int[] items = new[] { 42, 43, 44, 45 }; 

然后我希望他们能够呈现这样的:

42 -> 43 -> 44 -> 45 

这只是一个例子,在现实中的项目我想绑定到模板的对象,分隔符应该是图像(或其他任何东西)。在我的情况下,这些项目在ItemsControl内呈现为一个元素。

似乎很简单,但我找不到一个好方法来做到这一点。

亲切的问候, 罗纳德

回答

1

你可以使用一个StackPanel与水平方向,并添加一些序列(在TextBox控制)+分隔符(作为Image控制),你需要它。

+0

实际上,我是希望会有一个标准的控制,我可以用这一点,但我想这样的控制不存在? – 2009-10-27 12:23:06

+0

没有我所知道的,但无论如何,实现基于StackPanel的解决方案非常简单,请参阅Erez的答案。 – Konamiman 2009-10-27 12:41:05

+0

问题是我的项目的渲染发生在ItemsControl内的DataTemplate内部。所以我不知道什么时候添加我的项目到StackPanel。 – 2009-10-27 13:16:37

1

这个工作对我罚款:

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="333" Width="454"> 
    <Window.Resources> 
    </Window.Resources> 
    <StackPanel Name="myStackPanel"> 
    </StackPanel> 
</Window> 

和后面的代码:

 int[] items = new[] { 42, 43, 44, 45 }; 

     myStackPanel.Orientation = Orientation.Horizontal; 

     foreach (int item in items) 
     { 
      TextBlock txtNum = new TextBlock(); 
      txtNum.Text = item.ToString(); 

      TextBlock txtSeperator = new TextBlock(); // or image, as you wish 
      txtSeperator.Text = "->"; 

      myStackPanel.Children.Add(txtNum); 
      myStackPanel.Children.Add(txtSeperator); 
     } 
+0

但是如果我不想让TextBlock渲染我的项目而是自定义模板会怎么样。这可能以某种方式吗? – 2009-10-27 16:58:53

+0

是否可以实现自定义IValueConverter,它根据绑定的集合检查绑定的项目,并根据索引返回visible.visible或visibility.collapsed? – 2012-04-11 19:06:55

相关问题