سؤال

أحاول استخدام المتعددات المتعددة لتمكين / تعطيل زر استنادا إلى قيمة مربعين نصي.

تذكر المستندات أن الظروف الموجودة في المتعددات المتعددة أنثوها منطقيا معا. في المثال أدناه إذا كان txtfirst.text هو foo و txtsecond.text هو شريط أود تمكين الزر. ومع ذلك، يبقى الزر دائما معطل (Isenabled = خطأ).

أنا متأكد من أنني أفتقد خدعة هنا، لكن البحث الشامل لشركة Google لم أحصل على أي مكان ....

<StackPanel>
        <Button IsEnabled="False" Content="OK">
            <Button.Style>
                <Style>
                    <Style.Triggers>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=txtFirst, Path=Text}" Value="foo"/>
                                <Condition Binding="{Binding ElementName=txtSecond, Path=Text}" Value="bar"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Button.IsEnabled" Value="True"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>

        <TextBox x:Name="txtFirst"/>
        <TextBox x:Name="txtSecond"/>
    </StackPanel>
هل كانت مفيدة؟

المحلول

يؤدي تعيين خاصية مباشرة على الكائن نفسه إلى تجاوز أي إعدادات مدفوعة النمط. تغيير إعلان الزر الخاص بك إلى:

<Button Content="OK">
    <Button.Style>
        <Style>
            <Setter Property="IsEnabled" Value="False"/>
            <Style.Triggers>

الآن بعد أن تم تعيين خاصية Isenabled في النمط، فإن الزناد يمكن تغييره. لا تسألني لماذا. :)

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