سؤال

لدي ItemsControl التي ItemsSource يحصل لا بد أن ObservableCollection<مكون> في وقت التشغيل.لدي تعريف البيانات قالب نوع العنصر الذي يعمل بشكل جيد.

الآن العنصر كان ObservableCollection<التحكم> و أريد أن أضيف آخر ItemsControl داخل المكون Datatemplate تقديم كل الضوابط.التحكم هنا هو بلدي مخصص كائن لا علاقة wpf التحكم.

هناك أنواع مختلفة من الضوابط لذلك أنا أحاول أن استخدام ItemTemplateSelector اختيار القالب المناسب لكل نوع.في المثال أدناه للحفاظ صغيرة لدي فقط أظهرت واحدة من قوالب "RWString" التي أجد باستخدام FindResource في MyControlTemplateSelector تجاوز SelectTemplate.ولكن SelectTemplate لم يحصل تسمى(باستخدام نقطة الوصول).هل هناك شيء خاطئ في xaml ؟

<ItemsControl.Resources>
    <src:MyControlTemplateSelector x:Key="XSelector" />
    <DataTemplate DataType="{x:Type src:Component}"  >
        <Expander Visibility="{Binding Path=Show}">
                <ItemsControl ItemsSource="{Binding Path=Contrls}" 
                          ItemTemplateSelector="{StaticResource XSelector}">
                <ItemsControl.Resources>
                    <DataTemplate x:Key="RWstring" >
                        <TextBlock Text="{Binding Path=Label}"/>
                    </DataTemplate>
                </ItemsControl.Resources>
                <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate><WrapPanel /></ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
        </Expander>
    </DataTemplate>
</ItemsControl.Resources>

تحديث: Contrls ليس خطأ مطبعي فقط لي باستخدام سخيفة تسمية النظام.Contrls خاصية عنصر من نوع ObservableCollection.أيضا السبب في أنني أحاول أن استخدام ItemsTemplateSelector هو أن ObservableCollection<التحكم> يحتوي على كائنات من أنواع عامة مثل التحكم<int> التحكم<string> إلخ كل المستمدة من السيطرة على ما يبدو كنت غير قادر على إنشاء datatemplates الإشارة إلى أنواع عامة.

Update3: إزالة تحديث 2 كما كانت غير ذات صلة.حصلت على ItemTemplateSelector العمل عن طريق تغيير StaticResource إلى DynamicResource.ولكن أنا لا أعرف لماذا يعمل هذا...

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

المحلول

أعتقد أن هذا لا يعمل مع StaticResource كما المورد داخل ItemsControl التي ربما لم يتم إنشاؤها في وقت التحميل عند StaticResources يتم تقييمها.

DynamicResources في وقت التحميل يتم تقييم تعبير في وقت التحميل ومن ثم تقييم القيمة الصحيحة عند الطلب.

محاولة نقل الموارد من خارج ItemsControl.

نصائح أخرى

في السطر حيث ربط متداخلة ItemsControl ، هو الطريق الصحيح ؟ هو حاليا "Contrls" يجب أن يكون "الضوابط"?

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