gpt4 book ai didi

c# - 在 XAML(带绑定(bind))与 C# 中绘制路径。一个有效,一个无效

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:36 25 4
gpt4 key购买 nike

总体而言,我对编程完全陌生,但我自学 C# 已有大约 6 个月的时间。目前致力于 WPF/XAML。我正在尝试了解如何在 WPF 中渲染形状。

我在自定义类中创建了一个路径,我的 AllocationCanvas 在下面的 XAML 中绑定(bind)到该自定义类。无论出于何种原因,即使我知道绑定(bind)设置正确,它也不会绘制。

<Canvas x:Name="AllocationCanvas"
Grid.Row="0"
Grid.Column="0"
Width="Auto"
Height="Auto"
DataContext="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}}">
<Path Data="{Binding Path=chartmaker.myPath}"/>

</Canvas>

但是,如果我调用 AllocationCanvas.Children.Add(myPath) 它工作正常。我错过了什么?

public class ChartMaker {

private Dictionary<string, double> chartData;
Portfolio P;
public PathFigure arcs { get; set; }
private PathGeometry pathGeometry = new PathGeometry();
public Path myPath { get; set; }

public ChartMaker(Portfolio portfolio) {
P = portfolio;
chartData = new Dictionary<string, double>();

myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.Fill = Brushes.MediumSlateBlue;
myPath.StrokeThickness = 4;

arcs = new PathFigure();
arcs.StartPoint = new Point(100, 100);
arcs.IsClosed = true;
arcs.Segments.Add(new ArcSegment(new Point(200, 200), new Size(50, 50), 0, false, SweepDirection.Clockwise, true));
arcs.Segments.Add(new ArcSegment(new Point(150, 350), new Size(10, 10), 0, false, SweepDirection.Clockwise, true));

pathGeometry.Figures.Add(arcs);

myPath.Data = pathGeometry;

ProcessChartData();
}

private void ProcessChartData() {
double TotalMarketValue = P.Positions.Sum(position => position.MarketValue);

foreach (Position position in P.Positions) {
double weight = position.MarketValue/TotalMarketValue;
chartData.Add(position.Ticker, weight);
}


}
}

最佳答案

您正在将 PathData DP 绑定(bind)到 Path 类型的对象,这将不起作用。

DataGeometry 类型,因此您需要绑定(bind)到一个将返回 Geometry 而不是 Path 的对象.

将您的 pathGeomerty 设为 property 并与之绑定(bind) -

public PathGeometry Geometry
{
get
{
return pathGeometry ;
}
}

XAML-

<Path Data="{Binding Path=chartmaker.Geometry}"/>

关于c# - 在 XAML(带绑定(bind))与 C# 中绘制路径。一个有效,一个无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com