سؤال

أنا وضع IsEnabled خاصية التحكم استنادا إلى ما إذا كان أو لم يكن SelectedIndex >= 0 في مربع القائمة.يمكنني أن أفعل هذا في التعليمات البرمجية خلف ، ولكن أردت أن تخلق قيمة تحويل هذا السلوك لأنه هو شيء أنا لا في كثير من الأحيان.

أنا خلقت هذه القيمة محول إلى التعامل مع هذه المهمة و لا بد أن IsEnabled الملكية:

    [ValueConversion(typeof(Selector), typeof(bool))]
public class SelectorItemSelectedToBooleanConverter : IValueConverter
{
    #region IValueConverter Members
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null || !(value is Selector))
            return null;

        var control = value as Selector;
        return control.SelectedIndex >= 0;
    }

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

    #endregion
}

المحول هو إلا مرة واحدة ، عندما يتم تحميل التطبيق.لا النار عندما SelectedIndex التغييرات.

سؤالي هو بالتالي ما يسبب قيمة محول إلى النار ؟ أفترض أنه عندما لا بد تغييرات البيانات ، لذا هل هناك طريقة لإجبار محول النار في مختلف الظروف ؟ أنا أطرح السؤال ؟

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

المحلول

وسوف يتم إطلاق لأنك ملزمة لSelector نفسها، وليس الملكية SelectedIndex من Selector. سوف WPF مراقبة كل الممتلكات في المسار الذي ربط، والقيم التحديث إذا كان أي من هذه التغييرات خصائص. وSelector لا يتغير، وSelectedIndex هو.

نصائح أخرى

أعتقد المحول قد يكون الخطأ في طريقة للذهاب حول هذا الموضوع.أفضل حل هو استخدام RoutedCommand, و القيادة CanExecuted طريقة التحقق لمعرفة ما إذا كان الخاص بك SelectedIndex أكبر من أو يساوي 0.

الكثير يقال, إذا كنت لا تزال ترغب في استخدام الخاص بك قيمة المحول, يجب أن نعرف أن تحويل الحرائق كلما ملزمة المصدر التحديثات.يمكنك تغيير سلوك التحديث باستخدام UpdateSourceTrigger مكان الإقامة على ملزمة.افتراضيا يتم تعيين هذا إلى PropertyChanged, لكن لمربعات النص هو مجموعة LostFocus (كلما مربع النص يفقد التركيز الربط هو تحديث).

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