我正在使用WPF形状来渲染一些几何体。我保存了形状的渲染几何体,并在以后添加它们。现在的问题是我希望有人能够改变几何对象,比如增加形状的高度和宽度。
我知道一种方法,我可以更新字符串并将其分配回几何对象以更新它。
有没有替代或更好的方法来实现同样的目标?
答案 0 :(得分:0)
椭圆属性的简单示例:
<Path Fill="Gold" Stroke="Black" StrokeThickness="1">
<Path.Data>
<EllipseGeometry Center="50,50" RadiusX="{Binding RadiusX}" RadiusY="50" />
</Path.Data>
</Path>
在您的ViewModel(或DataContext
,如果您没有使用 MVVM设计模式)定义一个属性(使用INotifyPropertyChanged
或{{1}进行通知})名称为DependencyProperty
。现在当你改变它时,它应该更新几何显示。
这也适用于路径几何:
为此你必须要做两件事之一:
1)如上所述具有RadiusX
类型的属性并定期使用:
PathGeometry
2)有另一个数据结构,以你想要的方式保存你的点,然后使用转换器,它将获取你的积分并返回<Path Data="{Binding PointsForPath}"/>
元素:
PathGeomerty
保存路径
如果您使用的是SQL Server(或类似的),则可以选择将几何图形作为特殊列存储在表中,有关详细信息: SQL Geomerty
如果您需要有关答案中使用的术语的进一步帮助,请与我们联系:
<Path Data="{Binding Path=PointsForPath, Converter={StaticResource ResourceKey=PointsConverter}}"/>
ViewModel
DataContext
Binding
。
答案 1 :(得分:0)
您可以使用Xaml序列化。
来自the 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);
请注意,有一个some limitations to Xaml serialization,但据我所知,保存和加载几何图形很好。