2

我对 MSDN 示例感到非常困惑。我发现的所有示例通常都围绕 StackPanel 中的文本项或类似简单的东西。

给定一个数字数组作为 ItemsSource -

ItemsSource = { 25 , 50 , 75 }

ItemsControl 应该只处理这个:

<PolyLine Points="0,25 1,50 2,75" />

如图所示,每个项目都需要转换为一个点——其中“x”值是项目在项目列表中的位置,“y”值是项目本身的解释数值。

如果一个 ItemsPanelTemplate 是绝对需要的,我想它会对单个 PolyLine 的布局产生最小的影响 - 一个简单的 Grid,也许没有任何明确的列或行定义。

但我不知道如何在这种情况下实现ItemsPanelTemplate OR ItemsPresenter OR ItemTemplate。

谁能指出我正确的方向?

4

3 回答 3

0

你问的问题是可能的,但不是很直接...... Bea Stollnitz 写了一系列关于将 Polygon 的点集合绑定到数据源的文章,您可能可以从中得到一些想法。

于 2009-09-06T22:50:47.050 回答
0

我的猜测是您正在尝试创建显示折线图的控件。您可以查看WPF Toolkit 图表控件,尤其是LineSeries该类。源代码可供下载,您可以通过查看它来了解如何创建 WPF 控件。但是,该方法并不像简单地将一组数字绑定到一个PolyLine.

于 2009-09-06T23:03:37.383 回答
0

这是一个示例

<ItemsControl
    x:Name="ic">
    <ItemsControl.Resources>
        <local:DatumToPositionConverter x:Key="datumToPositionConverter" />
    </ItemsControl.Resources>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Ellipse
                    Width="2"
                    Height="2"
                    Fill="Red"
                    Margin="{Binding Converter={StaticResource datumToPositionConverter}}"
                    />
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

转换器用于将数据转换为位置。

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    double d;
    if (double.TryParse(value.ToString(), out d))
        return new Thickness(0, 0, 0, d);
    else
        return new Thickness();
}
于 2009-09-08T18:41:26.747 回答