2014-04-22 18 views
14

Ich habe ein WPF-Steuerelement mit einer Message-Eigenschaft.WPF-Bindung an zwei Eigenschaften

Im Moment habe ich dies:

<dxlc:LayoutItem > 
      <local:Indicator Message="{Binding PropertyOne}" /> 
</dxlc:LayoutItem> 

Aber ich brauche, dass Message Eigenschaft auf zwei Eigenschaften gebunden zu sein.

kann natürlich nicht so getan werden, aber dies kann helfen, erklären, was ich will:

<dxlc:LayoutItem > 
      <local:Indicator Message="{Binding PropertyOne && Binding PropertyTwo}" /> 
</dxlc:LayoutItem> 
+0

Mögliche Duplikate: https://Stackoverflow.com/q/2552853/1518546 –

Antwort

23

die MultiBinding Probieren:

Beschreibt eine Sammlung von Binding-Objekte an eine einzelne Bindungszieleigenschaft

Beispiel:

XAML

<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding Converter="{StaticResource myNameConverter}" 
        ConverterParameter="FormatLastFirst"> 
      <Binding Path="FirstName"/> 
      <Binding Path="LastName"/> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

Converter

public class NameConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
     string name; 

     switch ((string)parameter) 
     { 
      case "FormatLastFirst": 
       name = values[1] + ", " + values[0]; 
       break; 
      case "FormatNormal": 
       default: 
       name = values[0] + " " + values[1]; 
       break; 
     } 

     return name; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
    { 
     string[] splitValues = ((string)value).Split(' '); 
     return splitValues; 
    } 
} 
+1

Genau das, was ich brauchte, danke! –

+0

Das ist eine schrecklich ausführliche Art, dies zu erreichen. –

6

Sie können And Betrieb in XAML nicht.

Erstellen Sie Wrapper-Eigenschaft in Ihrer Ansicht Modellklasse, die zurückgegeben wird und von zwei Eigenschaften und binden Sie stattdessen mit dieser Eigenschaft.

public bool UnionWrapperProperty 
{ 
    get 
    { 
     return PropertyOne && PropertyTwo; 
    } 
} 

XAML

<local:Indicator Message="{Binding UnionWrapperProperty}" /> 

würde Ein anderer Ansatz MultiValueConverter zu bedienen. Übergeben Sie ihm zwei Eigenschaften und geben Sie stattdessen Und-Wert vom Konverter zurück.

+0

Was Sie gepostet haben, ist kein 'Bitwise AND'. Es ist nur ein AND-Operator. Auf jeden Fall glaube ich, dass er wollte, was auch immer der Typ ist, verkettet. – gleng

+2

Ja. Aber OP hat nichts in Frage erwähnt und da können wir '&&' Strings (oder alle Arten) nicht. Also, nahm gerade an, dass OP Bool Eigentum will. Wird aktualisiert, sobald OP das Bild gelöscht hat. –

10
<TextBlock.Text> 
    <MultiBinding StringFormat="{}{0} {1}"> 
     <Binding Path="FirstName"/> 
     <Binding Path="LastName"/> 
    </MultiBinding> 
</TextBlock.Text> 
+0

einfach das Beste !! – Ranger

Verwandte Themen