الفرق بين سمة القيمة والمواد الصريحة datatrigger.value في devidoutiontionary؟

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

سؤال

هل يمكن لأحد أن يقول لي لماذا لا يعمل ما يلي، ولكن واحد بعد ذلك يفعل؟ لاحظ القيمة = بناء جملة مقابل الاستخدام الصريح في الأخير. أنا لا أفهم الفرق.

<Style.Triggers>
    <DataTrigger Binding="{Binding ItemType}" Value="{x:Type log:FranchiseAiring}">
        <Setter Property="Template" Value="{StaticResource FranchiseRowStyle}" />
    </DataTrigger>
</Style.Triggers>

أعلاه يلقي استثناء، أدناه يعمل بشكل جيد:

<Style.Triggers>
<DataTrigger Binding="{Binding ItemType}">
    <DataTrigger.Value>
        <x:Type Type="{x:Type log:FranchiseAiring}" />
    </DataTrigger.Value>
    <Setter Property="Template" Value="{StaticResource FranchiseRowStyle}" />
</DataTrigger>

استثناء:يجب تحديد كل من الربط والقيمة ل DataTrigger. وبعد خطأ في الكائن "System.windows.datatrigger" في ملف العلامات "؛ مكون / ResourceTionaries / Logstyles.xaml 'Line 14 موضع 15.

تتبع المكدس: في system.windows.markup.xamlparseException.ctrowException (رسالة سلسلة، استثناء Innirexception، Int32 LineNumber، Int32 Tradition، URI Baseuri،

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

المحلول

من المحتمل أن يكون سبب علة Anurag المرتبط به، ولكن يجب أن تدرك أن الأمثلة التي استخدمتها غير متطابقة بدقة من وجهة نظر XAML.

إذا قمت بتحويل هذا بناء جملة العقارات

Value="{x:Type whatever}"

ما تحصل عليه هو:

<DataTrigger.Value>
  <x:Type TypeName="whatever">
</DataTrigger.Value>

ما كتبته في سؤالك يتوافق بالفعل مع

Value="{x:Type Type={x:Type whatever}}"

بسبب دلالات Typeextension، يجب أن ينتج كلاهما نفس القيمة في كل موقف يمكنني التفكير فيه. ولكن لأغراض أخرى قد تكون مختلفة، وقد دغدغة الأخطاء المختلفة في WPF.

لهذا السبب، من الممكن ذلك Value="{x:Type Type={x:Type log:FranchiseAiring}}" قد تعمل من أجلك. قد ترغب في تجربته ومعرفة ذلك.

نصائح أخرى

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