كيف يمكنني انتقائي تعيين "الرؤية" من TabItem عبر ربط البيانات / المشغلات

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

  •  08-07-2019
  •  | 
  •  

سؤال

ولدي صفحة علامة التبويب التي يجب أن تكون مخفية إذا تم تعيين خاصية (BlahType) إلى 1 وأظهرت إذا تم تعيين إلى 0. هذا هو ما أنا <م> تريد القيام به:

<TabItem Header="Blah">
    <TabItem.Triggers>
        <DataTrigger Binding="{Binding BlahType}" Value="0">
            <Setter Property="TabItem.Visibility" Value="Hidden" />
        </DataTrigger>
    </TabItem.Triggers>
</TabItem>

والمشكلة هي، وأحصل على هذا الخطأ:

"Triggers collection members must be of type EventTrigger"

إذا كنت جوجل هذا الخطأ، سترى أن <لأ href = "http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/f816fd72-4f41-4a1a-b0a2-4e409e89c75c / "يختلط =" noreferrer نوفولو "> د. WPF يفسر الخطأ . هل هناك طريقة نظيفة لتفعل ما أحاول تحقيقه هنا؟

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

المحلول

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

<TabItem Header="Blah">
    <TabItem.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding BlahType}" Value="0">
                    <Setter Property="TabItem.Visibility" Value="Hidden" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TabItem.Style>
</TabItem>

نصائح أخرى

حسنا، أنت لا تستطيع أن تفعل ذلك باستخدام مشغلات (لا إلا إذا كنت داخل DataTemplate، ControlTemplate أو النمط).

ويمكنك القيام بذلك باستخدام ملزمة، وسوف تحتاج لكتابة ValueConverter المخصصة التي سوف تترجم بين 0/1 إلى مرئي / مخفي وبعد ذلك يمكنك ربط خاصية الرؤية إلى الخاصية BlhaType.

وأو يمكنك فقط ضبط وضوح في رمز والتخلي عن النهج القائم على XAML (وهذا ما كنت قد فعلت).

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