Bagaimana cara memicu item terikat di WPF?

Saya ingin mengaktifkan pemicu jika ID properti item terikat sama dengan properti di kontrol khusus saya.

Tapi saya tidak bisa menggunakan binding di pemicu saya!

Bagaimana saya melakukan ini?


person ErikTJ    schedule 17.03.2010    source sumber


Jawaban (2)


Ini seharusnya berhasil:

<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>

Dan konverternya mungkin mirip dengan ini:

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
}

Perhatikan bahwa saya telah menggunakan konverter generik yang dapat menggabungkan nilai n, tetapi Anda dapat menggunakan yang sederhana sesuai kebutuhan Anda.

Semoga ini membantu.

person mg007    schedule 18.03.2010
comment
Saya Selalu mendapatkan nilai[1] disetel ke DependencyProperty.UnsetValue pada pengikatan ke properti. Saya telah mencoba banyak variasi tetapi selalu mendapatkan UnsetValue! Saran? - person ErikTJ; 18.03.2010
comment
di pihak saya, ini berfungsi dengan sempurna! Tampaknya ada masalah dengan binding Anda. Di manakah letak kontrol Anda (yang saya beri nama MockCustomControl) di pohon visual? Mungkin Anda dapat mengunggah proyek Anda di suatu tempat (seperti SkyDrive.com) sehingga saya dapat membantu Anda lebih lanjut :) - person mg007; 19.03.2010
comment
Implementasi yang lebih singkat adalah: return value != null && value.Length ›= 1 && value.Skip(1).All(v =› v == value[0]); - person splintor; 27.10.2013

Properti nilai DataTrigger tidak memerlukan pengikatan?


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

Jika tidak berhasil, Anda mungkin perlu menghubungkan ke suatu peristiwa dan memprosesnya sendiri di belakang kode.

person apandit    schedule 17.03.2010
comment
Saya tidak bisa menggunakan pengikatan di tag Nilai - person ErikTJ; 17.03.2010
comment
Anda tidak dapat menyetel Pengikatan pada Nilai karena ini bukan DependencyProperty. Namun, seperti yang dikatakan @apandit, DataTrigger adalah yang Anda cari! - person mg007; 18.03.2010