WPF الرسوم المتحركة "لا يمكن تجميد شجرة الجدول الزمني لوحات العمل هذه للاستخدام عبر المواضيع"

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

سؤال

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

<Storyboard x:Key="ShowItemEdit">
    <DoubleAnimation
        Storyboard.TargetName="lstItemList"
        Storyboard.TargetProperty="ListBox.Width"
        To="{Binding ActualWidth, ElementName=UserControl}"
        Duration="0:0:0.40" />
    ...
</Storyboard>

<Style x:Key="ListStyle">
    <Style.Triggers>
        <DataTrigger Binding="{Binding SelectedItem, Converter={StaticResource IsNullConverter}}" Value="False">
            <DataTrigger.EnterActions>
            <BeginStoryboard Storyboard="{StaticResource ShowItemEdit}" />
        </DataTrigger.EnterActions>
        </DataTrigger>
     </Style.Triggers>
</Style>

<ListBox x:Name="lstItemList" Style={StaticResource ListStyle}" SelectedItem="{Binding SelectedItem}">
    ...
</ListBox>
هل كانت مفيدة؟

المحلول

يمكنك نشر لوحة القصة المصورة الخاصة بك؟ يبدو وكأنه لديك نوع من الربط في تعريف القصة المصورة.


حسنا، كما اشتبهت، لأنك تستخدم Binding في الخاص بك Storyboard. وبعد لا يمكنك القيام بذلك لأن WPF يحاول تجميد جميع الموارد الاستفادة من قالب للكفاءة وعند استخدام ملزمة على Freezable, ، في هذه الحالة Storyboard, ، يمنعه من أن تكون قادرا على التجميد.

نصائح أخرى

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

السؤال القديم ولكن قد يكون مفيدا للأشخاص الآخرين. في بعض الأحيان، يمكن أن يكون إنشاء لوحة القصة المصورة في الكود-وراءه أبسط: https://stackoverflow.com/a/10848781/779521.

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