繁体   English   中英

在C#中修改资源?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM