[英]Modifying a resource in C#?
我在XAML中定义了一个资源(myPoint),如下所示:
<Path Name="myPath">
<Path.Resources>
<Point x:Key="myPoint" X="200" Y="200"/>
</Path.Resources>
</Path>
在相应的C#代码中的OnApplyTemplate重写中,我使用以下代码获取对此资源的引用。
myPointReference = (Point)myPath.FindResource("myPoint");
现在,只要我修改myPointReference的值,就可以说,
myPointReference.X = 30;
它不会修改资源myPoint的值,而只会更改myPointReference的值。 如何使myPointReference成为对XAML定义的资源myPoint的实际引用,以便在修改myPointReference的值时也修改myPoint的值?
在XAML中使用“资源”扩展时,在幕后,您正在处理ResourceDictionary,并且正在向其添加结构(aka值类型),该结构将通过值(aka复制)传递到此字典中,然后当您要求您将退还一份副本。
处理ResourceDictionary时,无法通过引用传递值类型。
但是,如果您确实需要在修改副本后执行此操作,则可以将字典中的旧副本替换为修改后的副本。
您可以通过以下方式进行尝试:
myPath.SetResourceReference("myPoint", myPointReference)
您可能要考虑不要在XAML或使用ResourceDictionary中这样做。 您可以只在后面的代码中管理Point,并根据需要对其进行更新并将其设置为Path。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.