2009-08-23 13 views
14
<Button IsEnabled="{Binding (Not IsDisabled)}" /> 

क्या शुद्ध xaml के साथ ऐसा करने का कोई तरीका है, या मुझे कोड के माध्यम से ऐसा करना होगा? पीएस।एक्सएएमएल 'नहीं' ऑपरेटर?

<ValueConversion(GetType(Boolean), GetType(Boolean))> 
Public Class BooleanFlagSwitchConverter : Implements IValueConverter 

    Public Function Convert(value As Object, targetType As Type, 
      parameter As Object, culture As CultureInfo) As Object 
      Implements IValueConverter.Convert 
     Return Not value 
    End Function 

    Public Function ConvertBack(value As Object, targetType As Type, 
      parameter As Object, ByVal culture As CultureInfo) As Object 
      Implements IValueConverter.ConvertBack 
     Return Not value 
    End Function 

End Class 

[ValueConversion(typeof(bool), typeof(bool))] 
public class BooleanFlagSwitchConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, 
     CultureInfo culture) 
    { 
     return !(bool)value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, 
     CultureInfo culture) 
    { 
     return !(bool)value; 
    } 
} 
+0

मुझे लगता है कि यह पसंदीदा है <बटन IsEnabled = "{बाध्यकारी IsEnabled}" /> सकारात्मक में। :) – user347594

उत्तर

12

यह मौजूद नहीं है: मैं सवाल जानते हुए भी कि मैं इस तरह एक बूलियन कनवर्टर बना सकते हैं पूछा। properties on the Binding कक्षा को देखें। एक कनवर्टर के अलावा कुछ भी नहीं है जो आप चाहते हैं जो करेंगे।

2

मैं https://quickconverter.codeplex.com/

का उपयोग कर Inverting एक बूलियन तो है की सिफारिश करेंगे के रूप में सरल रूप में: <Button IsEnabled="{qc:Binding '!$P', P={Binding IsDisabled)}" />

उस समय सामान्य रूप से कन्वर्टर्स लिखने के लिए की जरूरत को गति।

+0

इस समाधान के लिए दो-तरफा बाध्यकारी काम करता है? –

+1

हां, ऊपर लिंक की गई साइट के दस्तावेज के अनुसार। उदाहरण: 'ऊंचाई =" {क्यूसी: बाइंडिंग '$ पी * 10', कन्वर्टबैक = '$ मूल्य * 0.1', पी = {बाध्यकारी टेस्टविड्थ, मोड = दोवे}} "' – Noxxys

संबंधित मुद्दे