如何用C#替换XAML路径的数据
本文关键字:路径 数据 XAML 替换 何用 | 更新日期: 2023-09-27 18:28:56
我有一个XAML路径。。。
<Path x:Name="test" Stretch="Uniform" Fill="#FF2A2A2A" Data="F1 M 9143.18... Z "/>
我想用C#这样更改"数据"(我有新的路径数据作为字符串)。。。
test.Data = "F1 M 987... Z";
我如何才能为通用应用程序(8.1)实现这一点?
这应该有效,但它不起作用(Windows.UI.Xaml.Media.Geometry不包含"分析"的定义)
test.Data = Geometry.Parse("F1 M 987... Z");
如有任何帮助或指导,我们将不胜感激。
提前谢谢。
好的,谢谢。。。以下是它对我的作用…
<Path x:Name="test" Stretch="Uniform" Fill="#FF2A2A2A" Data="{Binding}"/>
test.DataContext = "F1 M 987... Z";
如果你想将字符串解析为Geometry,你可以使用XamlReader.Load。一旦你有了Geometry之后,你就可以按照BCdotNet的建议将其绑定(但你可能想触发一个更改通知)或显式设置Data
// Parse the path-format string into a Geometry
Geometry StringToPath(string pathData)
{
string xamlPath =
"<Geometry xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>"
+ pathData + "</Geometry>";
return Windows.UI.Xaml.Markup.XamlReader.Load(xamlPath) as Geometry;
}
// In some function somewhere...
// Set the path either directly
test.Data = StringToPath("M 282.85714,355.21933 160,260.93361 260,169.50504 448.57143,163.79075 494.28571,286.6479 z");
// Or via data binding
PathGeometry = StringToPath("M 282.85714,355.21933 160,260.93361 260,169.50504 448.57143,163.79075 494.28571,286.6479 z");
//....
// If we want changes to the bound property to take effect we need to fire change notifications
// Otherwise only the initial state will apply
Geometry _geometry;
public Geometry PathGeometry
{
get
{
return _geometry;
}
set
{
_geometry = value;
NotifyPropertyChanged("PathGeometry");
}
}
您需要绑定它。
C#:
public PathGeometry Geometry
{
get
{
return pathGeometry ;
}
}
XAML:
<Path Data="{Binding Path=chartmaker.Geometry}"/>