【问题标题】:Draw lines using wpf doesn't work using codebehind使用 wpf 绘制线条无法使用代码隐藏
【发布时间】:2014-07-08 08:10:29
【问题描述】:

我是 WPF 的新手,我正在尝试使用 WPF 绘制地图,所以我从数据库中获取点,如您在此处看到的:

   lstSensorLeft = objSensorRepository.FindBy(i => i.Path.LineId == 1 && i.Direction == "Left").OrderBy(i => i.Order).ToList();
            PointCollection obj = new PointCollection();

            foreach (Sensor point in lstSensorLeft)
            {
                Point aaa=new Point();
                aaa.X = point.XLocation;
                aaa.Y = point.YLocation;
            }
            Lines.Points = obj; 

在 Xaml 部分我有这个代码:

 <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="500*"/>
            <ColumnDefinition Width="93*"/>
        </Grid.ColumnDefinitions>
        <Polyline  Stroke="Blue" StrokeThickness="2" Name="Lines" Grid.ColumnSpan="2"/>
        <Button Content="Button" HorizontalAlignment="Left" Margin="74,283,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_2"/>
    </Grid>

但是线条没有出现。

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    在您的foreach 循环中,您不会将新点添加到集合中。例如。缺少这样的东西:

    obj.Add(aaa);
    

    【讨论】:

    • 谢谢,它有效,但还有一个问题,我需要每个点都是一个圆圈,我应该更改代码中的任何内容吗?
    • 如果您想将每个点表示为一个圆圈,那么我建议您使用ItemsControl 而不是Polyline,并将每个点作为一个项目添加到控件中。项目控件的面板应该是Canvas,点的X和Y坐标应该绑定Canvas.LeftCanvas.Top属性。此答案中描述了类似的内容:stackoverflow.com/questions/19797737/…
    • 谢谢。你知道我应该在这张地图上画一条火车线并用动画显示在线火车,所以你能建议我应该使用哪种方法吗?
    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多