سؤال

لدي العديد من الرموز التي تم الإعلان عنها في 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 على الطاير.

خياراتك هي:

  1. لا تستخدم Image واستخدام بدلا من ذلك ImageSource أو حتى أ string يحتوي على URI للصورة.
  2. قم بتعيين المورد إلى غير مشترك مع x:Shared سمة XAML.سيؤدي هذا إلى إنشاء متعددة Image الضوابط حسب الحاجة.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top