باستخدام مربع القائمة (أو غيرها من ItemsControl) لاستضافة العروض Caliburn

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

سؤال

وإذا كان لدي MultiPresenter وأنا باستخدام ListBox لعرض Presenters عن استضافتها، كيف يمكنني الحصول على Caliburn لاكتشاف وربط وجهات النظر وعرض نماذج للعناصر؟

وعلى سبيل المثال، إذا كان لدي وجهة نظر بسيطة ويبدو أن شيئا من هذا القبيل:

<UserControl x:Class="MyProject.Views.CarView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <ListBox ItemsSource="{Binding Parts}" />
    </Grid>
</UserControl>

والتي لا بد للCarViewModel:

public class CarViewModel : MultiPresenter
{
    public BindableCollection<IPartViewModel> Parts { get; }
}

وجمع Parts يحتوي على الكائنات المختلفة التي تنفذ IPresenter ووجهات النظر المقابلة، على سبيل المثال WheelViewModel وWheelView، وEngineViewModel وEngineView.

وأود Caliburn لحل الآراء بالنسبة لي باستخدام استراتيجية الرأي. هل هذا ممكن؟ ماذا يجب أن أفعل لتعيين بشكل صحيح أعلى التسلسل الهرمي من العروض في هذه الحالة؟

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

المحلول

وليس لديك لتغيير التسلسل الهرمي مقدم لهذا الغرض. أقترح فقط لك أن تنظر باستخدام الخاصية MultiPresenter.Presenters لجمع ViewModels الطفل وMultiPresenter.Open وطرق MultiPresenter.Shutdown إذا كنت بحاجة إلى فرض ViewModels الطفل دورة الحياة.

لقضية ملزمة، يجب عليك تحديد قالب للعناصر مربع القائمة:

<ListBox ItemsSource="{Binding Parts}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <ContentControl cal:View.Model="{Binding}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

وعن طريق cal:View.Model المرفقة الملكية، ويأخذ إطار رعاية خلق مشاهدة المناسب لكل ViewModel، فإنه ملزم لViewModel وحقنه في ContentControl.

ويجب أيضا التأكد من أن لديك مساحة الاسم والطبقة التسمية لآراء وViewModels يتبع Caliburn <لأ href = "http://caliburn.codeplex.com/wikipage؟title=View٪20Strategies" يختلط = "نوفولو noreferrer" > اتفاقية الافتراضي إذا كنت تريد الخاص بك المشاهدات إلى أن يستدل بشكل صحيح من قبل الإطار. خلاف ذلك، لديك لكتابة IViewStrategy مخصص (هو ليس من الصعب، على الرغم من).


تحرير: الثابتة التعبير ملزمة في كال: الملكية View.Model

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