我正在使用 WPF 形状来渲染一些几何图形。我保存形状的渲染几何形状并稍后添加它们。现在问题是我希望有人能够改变几何对象,比如增加形状的高度和宽度。
我知道一种可以更新字符串并将其分配回几何对象以进行更新的方法。
有没有替代或更好的方法来完成同样的事情?
椭圆属性的简单示例:
<Path Fill="Gold" Stroke="Black" StrokeThickness="1">
<Path.Data>
<EllipseGeometry Center="50,50" RadiusX="{Binding RadiusX}" RadiusY="50" />
</Path.Data>
</Path>
并在您的 ViewModel 中(或者DataContext
如果您不使用MVVM 设计模式)定义一个具有名称的属性(使用 theINotifyPropertyChanged
或 a通知) 。现在,当您更改它时,它应该会更新您的几何显示。DependencyProperty
RadiusX
这也可以为 Path Geometry 完成:
为此,您将必须做以下两件事之一:
1) 具有PathGeometry
上述类型的属性并经常使用它:
<Path Data="{Binding PointsForPath}"/>
2)有另一个数据结构,以您想要的方式保存您的积分,然后使用转换器,它将获取您的积分并返回一个PathGeomerty
元素:
<Path Data="{Binding Path=PointsForPath, Converter={StaticResource ResourceKey=PointsConverter}}"/>
保存路径:
如果您使用的是 SQL Server(或类似服务器),您可以选择将几何存储为表中的特殊列,以获取更多信息: SQL Geomerty
如果您需要有关答案中使用的术语的进一步帮助,请告诉我:
ViewModel
DataContext
Binding
DependencyProperty
.
您可以使用 Xaml 序列化。
从MSDN:
// Create the Xaml.
Button originalButton = new Button();
originalButton.Height = 50;
originalButton.Width = 100;
originalButton.Background = Brushes.AliceBlue;
originalButton.Content = "Click Me";
// Save the Button to a string.
string savedButton = XamlWriter.Save(originalButton);
// Load the button
StringReader stringReader = new StringReader(savedButton);
XmlReader xmlReader = XmlReader.Create(stringReader);
Button readerLoadButton = (Button)XamlReader.Load(xmlReader);
请注意,Xaml 序列化存在一些限制,但据我所知,保存和加载几何图形是可以的。