Модификация ресурса в C #? - PullRequest
       4

Модификация ресурса в C #?

1 голос
/ 07 октября 2010

У меня есть ресурс (myPoint), определенный в XAML следующим образом:

<Path Name="myPath">
   <Path.Resources>
      <Point x:Key="myPoint" X="200" Y="200"/>
   </Path.Resources>
</Path>

В переопределении OnApplyTemplate в соответствующем коде C # я использую следующее для получения ссылки на этот ресурс.

myPointReference = (Point)myPath.FindResource("myPoint");

Теперь, когда я изменяю значение myPointReference, скажем,

myPointReference.X = 30;

, оно не меняет значение ресурса myPoint, оно только меняет значение myPointReference.Как я могу сделать myPointReference фактической ссылкой на мой определенный в XAML ресурс myPoint, чтобы при изменении значения myPointReference я также изменял значение myPoint?

1 Ответ

1 голос
/ 07 октября 2010

Под прикрытием, когда вы используете расширение «Ресурсы» в XAML, вы имеете дело с ResourceDictionary и имеете дело с добавлением к нему структуры (типа значения), которая будет передаваться по значению (также называемой копией) в этот словарь, итогда, когда вы запросите его, вам будет возвращена копия.

Невозможно передать типы значений по ссылке при работе с ResourceDictionary.

Однако, если вам действительно нужно это сделать после изменения копии, вы можете заменить старую копию всловарь с вашей измененной копией.

Вы можете попробовать это, вызвав:

myPath.SetResourceReference("myPoint", myPointReference)

Возможно, вы захотите не делать этого в XAML или не использовать ResourceDictionary.Вы можете просто управлять точкой в ​​коде и обновлять ее, а также при необходимости указывать путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...