كيف يمكنني تفعيل / تعطيل عرض وحدة نمطية بعد التهيئة الخاصة به؟

StackOverflow https://stackoverflow.com/questions/360378

  •  21-08-2019
  •  | 
  •  

سؤال

ويتعلق هذا التوجيه طلب مركب لبرنامج الأغذية العالمي، أو بريزم.

ولدي "MainRegion" واحد في بلدي شل. سيتم تحميل بلدي الوحدات المختلفة في هذه المنطقة الرئيسية. يمكنني تجميع قائمة من الوحدات المتاحة في القائمة وحدد لهم ليتم تحميلها. على النقر على القائمة أفعل:

var module = moduleEnumerator.GetModule(moduleName);
moduleLoader.Initialize(new[] { module });

وفي المرة الأولى فقط يعمل طيب، ليتم تنفيذ تهيئة () أساليب وحدات، ولكن بعد أن يتم تهيئة Module1، Module2 وModule3، لا شيء يحدث عند النقر فوق لتحميل Module2 مرة أخرى.

وسؤالي: كيف يمكنني تفعيل وحدة نمطية على الطلب، بعد أن تم تنفيذ طريقة تهيئة لها

وشكرا لكم على مساعدتكم!

هل كانت مفيدة؟

المحلول

وأنت في الواقع لا تفعيل وحدة. تقوم بتنشيط طريقة عرض في المنطقة. خذ قراءة هذا المقالة .

وويطلق على طريقة تهيئة سوى مرة واحدة لأية وحدة نمطية. حقيقة أن كنت ترى وجهة نظر في وحدة يتم تفعيلها عند استدعاء LoadModule اعتقد ان ويرجع ذلك إلى حقيقة أن طريقة Initilalize وتسجل وجهة نظر مع المنطقة. هذا وسوف تفعيل الرأي. إذا كان لديك أكثر من رأي واحد ثم آخر المسجلة ستكون واحدة نشطة.

لتفعيل وجهة نظر تحتاج إلى استدعاء الأسلوب تنشيط المنطقة (على افتراض وحقن IUnityContainer وIRegionManager) ...

// Get a view from the container.
var view = Container.Resolve<MyView>();

// Get the region.
var region = RegionManager.Regions["MyRegion"];

// Activate the view.
region.Activate(view);

واعتمادا على نوع من السيطرة المنطقة وهذا إما استبدال الرأي القائل بأن هناك أو إضافة إليها.

نصائح أخرى

ويمكنك إزالة مشاهدة بالدعوة طريقة إزالة المناطق و.

public void RemoveViewFromRegion(string viewName, string regionName, object defaultView)
    {
      IRegion region = regionManager.Regions[regionName];
      object view = region.GetView(viewName);
      region.Remove(view);
      region.Activate(defaultView); 
    }

ويجب ان تكون ContentControl التي ستكون منطقتك. فإنك سوف تحتاج إلى إضافة كافة الوحدات النمطية لهذه المنطقة. عند النقر على القائمة يجب عليك استخدام تنشيط طريقة (...) في المنطقة من أجل تفعيل وحدة معينة.

هل هذا يعني عند تنشيط وحدة، ويتم تعيين وحدات ثم الأخرى التي يمكن أن تتداخل بها إلى Visibility.Collapsed؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top