سؤال
لدي العديد من الرموز التي تم الإعلان عنها في Window.Resources.يظهرون بشكل جيد في المرة الأولى التي يحتاجون فيها للظهور (على سبيل المثال:يتم النقر على القائمة، ويعمل رمز MenuItem)، ولكن بعد قائمة أخرى (على سبيل المثال:تظهر قائمة السياق)، ويختفي الرمز الأصلي ولا يعود.يبدو الأمر كما لو أن العنصر الأخير الذي استخدم الأيقونة لأول مرة يجب أن يحتفظ بها.
<Window.Resources>
<Image x:Key="Chart_16"
Source="pack://application:,,,/Resources/images/chart_16.png" />
...
<Window.Resources>
<MenuItem Header="Summary"
Command="loc:AppCommands.ShowSummary"
Icon="{StaticResource Chart_16}" />
لقد حاولت حفظه بتنسيق PNG 24 بت و PNG متداخل 24 بت و PNG 8 بت ولكن نفس الشيء يحدث.إنها ليست مجرد أيقونة واحدة، فكل أيقونة يتم استخدامها في أكثر من مكان تتصرف بهذه الطريقة.
المحلول
ذلك لأن المورد الخاص بك هو Image
, ، وهو أ Control
. Control
يمكن أن يكون لدى الوالدين أحد الوالدين فقط، لذا تتم إعادة تربيته بشكل فعال في كل منهما MenuItem
على الطاير.
خياراتك هي:
- لا تستخدم
Image
واستخدام بدلا من ذلكImageSource
أو حتى أstring
يحتوي على URI للصورة. - قم بتعيين المورد إلى غير مشترك مع
x:Shared
سمة XAML.سيؤدي هذا إلى إنشاء متعددةImage
الضوابط حسب الحاجة.
لا تنتمي إلى StackOverflow