จะทริกเกอร์ไอเท็มที่ถูกผูกไว้ใน WPF ได้อย่างไร

ฉันต้องการเปิดใช้งานทริกเกอร์หาก ID คุณสมบัติรายการที่ถูกผูกไว้เท่ากับคุณสมบัติในการควบคุมแบบกำหนดเองของฉัน

แต่ฉันไม่สามารถใช้การผูกในทริกเกอร์ได้!

ฉันจะทำเช่นนี้ได้อย่างไร?


person ErikTJ    schedule 17.03.2010    source แหล่งที่มา


คำตอบ (2)


สิ่งนี้ควรจะได้ผล:

<DataTrigger
    Value="True">

    <DataTrigger.Binding>
        <MultiBinding
            Converter="{x:Static local:EqualityConverter.Instance}">
            <Binding
                Path="BoundProperty" />
            <Binding
                ElementName="MockCustomControl"
                Path="Text" />
        </MultiBinding>
    </DataTrigger.Binding>

    <DataTrigger.Setters>
        <Setter
            TargetName=" ... "
            Property=" ... "
            Value=" ... " />

         ...
         ...

    </DataTrigger.Setters>

</DataTrigger>

และตัวแปลงอาจเป็นสิ่งที่คล้ายกับสิ่งนี้:

public class EqualityConverter : IMultiValueConverter
{
    public static readonly EqualityConverter Instance = new EqualityConverter();

    #region IMultiValueConverter Members

    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (values == null || values.Length == 0) return false;

        for (int i = 1; i < values.Length; i++)
            if (!values[i].Equals(values[0])) return false;

        return true;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

โปรดทราบว่าฉันใช้ตัวแปลงทั่วไปที่สามารถตั้งค่า n ค่าได้ แต่คุณสามารถใช้แบบธรรมดาได้ตามความต้องการของคุณ

หวังว่านี่จะช่วยได้

person mg007    schedule 18.03.2010
comment
ฉันจะได้รับค่า [1] ที่ตั้งค่าเป็น DependencyProperty.UnsetValue เสมอในการเชื่อมโยงกับคุณสมบัติ ฉันได้ลองใช้รูปแบบต่างๆ มากมาย แต่ได้รับ UnsetValue เสมอ! ข้อเสนอแนะ? - person ErikTJ; 18.03.2010
comment
ฝั่งของฉันมันทำงานได้อย่างสมบูรณ์แบบ! ดูเหมือนว่ามีปัญหาบางอย่างกับการผูกข้อมูลของคุณ การควบคุมของคุณ (ซึ่งฉันตั้งชื่อว่า MockCustomControl) อยู่ที่ไหนในแผนผังภาพ บางทีคุณอาจอัปโหลดโครงการของคุณที่ไหนสักแห่ง (เช่น SkyDrive.com) เพื่อที่เราจะได้ช่วยเหลือคุณเพิ่มเติมได้ :) - person mg007; 19.03.2010
comment
การใช้งานที่สั้นกว่าคือ: return ค่า != null &&values.Length ›= 1 &&values.Skip(1).All(v =› v ==values[0]); - person splintor; 27.10.2013

คุณสมบัติค่าของ DataTrigger ไม่มีการผูกมัดใช่ไหม


    <DataTrigger Binding="{Binding BoundPropertyId}" Value="{Binding ElementName=Mine, Path=Property}" />

หากไม่ได้ผล คุณอาจต้องเชื่อมต่อกับเหตุการณ์และดำเนินการด้วยตนเองในโค้ดเบื้องหลัง

person apandit    schedule 17.03.2010
comment
ฉันไม่สามารถใช้การเชื่อมโยงในแท็กค่าได้ - person ErikTJ; 17.03.2010
comment
คุณไม่สามารถตั้งค่า Binding on Value ได้เนื่องจากไม่ใช่ DependencyProperty อย่างไรก็ตาม ตามที่ @apandit กล่าวว่า DataTrigger คือสิ่งที่คุณกำลังมองหา! - person mg007; 18.03.2010