如何将集合绑定到网格WPF

时间:2014-03-01 02:16:14

标签: c# wpf xaml binding

好的,我有办法实现这个目标

enter image description here

但我在c#中这样做

public partial class PlotTest
    {
        public PlotTest(double x, double y)
        {
            InitializeComponent();

            PlotControl.Margin = new Thickness(x, y, 0, 0);
        }

        public void setPlot(List<double> tempSol)
        {
            double step = (tempSol.Max() - tempSol.Min()) / 10;

            for (int ctr = 0; ctr < 10; ctr++)
            {
                TextBlock rect = (TextBlock)PlotValue.Children[ctr];
                rect.Text = (ctr == 0) ? tempSol.Max().ToString("F") :
                            (ctr == 9) ? tempSol.Min().ToString("F") : 
                            (tempSol.Max() - ctr * step).ToString("F");
                rect.TextAlignment = TextAlignment.Right;
                rect.FontSize = 10;
            }
        }
    }
}

因为我用c#和我这样做,所以使用wpf我希望找到一种方法将它绑定到一个精确的这个

 private List<double> tempsol = new List<double> {3.21, -5.41, -15.81, -21.69, -21.70, -12.60, -6.41, -0.06, 5.42, 13.32, 14.12, 7.55};

但由于我是wpf的新手,xaml我真的不确定该怎么做,我找不到任何直接适用于我的问题的解决方案我可以使用一些帮助谢谢。

1 个答案:

答案 0 :(得分:2)

Grid只是Panel的一种类型,但我不认为在您的情况下选择它是正确的。

在事物的核心,您想要做的是直观地显示一系列值,它们恰好是双值。当您想要以可视方式显示序列时,您必须查看ItemsControl(或此类的衍生物)。从那里,您可以自定义每个元素在视觉上的表示方式,以及如何在视觉上表示整个元素序列:

<ItemsControl ItemsSource="{Binding Path=MyCollection}">
  <ItemsControl.ItemsPanel>
    <custom:SomePanel />
  </ItemsControl.ItemsPanel>
  <ItemsControl.ItemTemplate>
    <DataTemplate>
        <!-- Some representation of each element -->
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

当然,如果您决定推出自己的Panel,这里有一些补充阅读材料:


或者,您可以使用已在其中创建的内容:WPF chart controls