سؤال

أضفت أنماط مخصصة المسماة إلى app.xaml.

قمت بإنشاء قاموس مورد خارجي (الذي أرفق في القواميس المدمجة من App.xaml) وعند محاولة استخدام أحد الأنماط المذكورة أعلاه في قاموس RCOURCE، تقول أنه لا يوجد مثل هذا النمط.

كما أن الأساليب الافتراضية (أي أنماط Unnamed التي تنطبق على التطبيق بأكملها) لا تنطبق على عناصر القالب.

ملاحظة: إجراء بناء القوالب هو "الصفحة".


هنا مثال على كيفية كتابة التعليمات البرمجية الخاصة بي:

<Application x:Class="Application"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
    ShutdownMode="OnExplicitShutdown">
    <Application.Resources>
        <ResourceDictionary>

            <Style
                    x:Key="StackPanelStyle" 
                    TargetType="StackPanel" 
                    BasedOn="{StaticResource {x:Type StackPanel}}">
                <Setter Property="Margin" Value="5"/>
                <Setter Property="Orientation" Value="Horizontal" />
                <Setter Property="Height" Value="40"/>
            </Style>

            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Templates/DataTemplate1.xaml"/>
                <ResourceDictionary Source="/Templates/DataTemplate2.xaml"/>
                <ResourceDictionary Source="/Templates/DataTemplate3.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

هذا مثال لقالب البيانات:

<DataTemplate DataType="{x:Type Entity}" x:Key="NameDataTemplate">
    <Expander>
        <StackPanel>
            <--The following line produces: StackPanelStyle was not found.-->
            <StackPanel Style="{StaticResource StackPanelStyle}">
                <Label Content="Name:"/>
                <TextBox Text="{Binding Name}"/>
            </StackPanel>
        </StackPanel>
    </Expander>
</DataTemplate>

أيه أفكار؟ هل يجب علي دمج القواميس بطريقة مختلفة؟

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

المحلول

لن يعمل الرمز جيدا لأن DataTemplate في قاموس المورد لا يعرف أي واحد يستخدمه، إنه فقط ايضا تستخدم. مثل وضع هوليوود. جمعوا بشكل منفصل.

لجعل هذا العمل، يمكنك وضع أسلوبك الذي في app.xaml في نفس القاموس المورد من DataTemplate أو إذا كنت لا تحب هذا الاقتران، يمكنك ضعه في قاموس مورد مختلف، ودمجه في قاموس موردين DataTemplate.

نصائح أخرى

يجب أن يكون إجراء Build Action for App.xaml الخاص بك ApplicationDefinition، ويجب أن يكون إجراء بناء ملفات قاموس الموارد الخاصة بك الصفحة. أنا أظن أن لديك كل من صحيح لأنهم افتراضيون (وأرى أنك ذكرت في الصفحة بالفعل).

لا أستطيع التفكير في أي مشكلة أخرى مع وضعك. طالما يتم تعريف مواردك الثابتة بالترتيب الصحيح، والتي يبدو أنها، يجب أن تكون قادرا على العثور عليها عند تشغيل التطبيق الخاص بك.

يحرر

فكرة التصحيح: إنشاء قاموس موردي جديد يسمى "TestDictionary.xaml" مع نمط زر بسيط. تأكد من أن هذا القاموس موجود في نفس المجلد مثل القواميس الأخرى الخاصة بك (datatemplate1.xaml، إلخ). ضع رابطا لاختبار فقط في MergedDictionaries (تعليق الآخرين). ضع زر على نافذة بدء التشغيل وتطبيق النمط. معرفة ما إذا كان ذلك يعمل فقط. إذا فشل ذلك، فأنت تعلم أن لديك مشكلة في دمج الخاص بك. إذا نجحت، شيء عن حياتك DataTemplate قد تكون المشكلة.

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