Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用分隔符在Silverlight中水平显示项目列表?_Silverlight - Fatal编程技术网

如何使用分隔符在Silverlight中水平显示项目列表?

如何使用分隔符在Silverlight中水平显示项目列表?,silverlight,Silverlight,我想知道是否有Silverlight控件允许我水平显示项目列表,每对项目之间有一个分隔符 例如,假设这是我的项目列表: int[] items = new[] { 42, 43, 44, 45 }; 然后我希望它们被渲染成这样: 42 -> 43 -> 44 -> 45 这只是一个例子,实际上项目是我想绑定到模板的对象,分隔符应该是一个图像(或其他任何东西)。在我的例子中,项目被呈现为ItemsControl中的一个元素 看起来很简单,但我找不到一个好办法 亲切问候,, R

我想知道是否有Silverlight控件允许我水平显示项目列表,每对项目之间有一个分隔符

例如,假设这是我的项目列表:

int[] items = new[] { 42, 43, 44, 45 };
然后我希望它们被渲染成这样:

42 -> 43 -> 44 -> 45
这只是一个例子,实际上项目是我想绑定到模板的对象,分隔符应该是一个图像(或其他任何东西)。在我的例子中,项目被呈现为
ItemsControl
中的一个元素

看起来很简单,但我找不到一个好办法

亲切问候,,
Ronald

您可以使用水平方向的
堆叠面板,并根据需要添加数字序列(在
文本框
控件中)+分隔符(作为
图像
控件)。

这对我来说很好:

<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>

我实际上希望有一个标准控件可以用于此,但我认为这样的控件不存在?据我所知没有,但无论如何实现基于StackPanel的解决方案非常容易,请参见Erez的答案。问题是,我的项的呈现发生在ItemsControl内的DataTemplate内。因此,我不知道何时将我的项目添加到StackPanel。但是如果我不希望使用TextBlock来呈现我的项目,而是希望使用自定义模板,该怎么办。这是否可能?是否可以实现自定义IValueConverter,其中它根据绑定到的集合检查绑定项,并依赖于索引返回visibility.visible或visibility.collapsed?
     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);
        }