2014-04-22 19 views
14

Possiedo un controllo WPF con proprietà Message.Associazione WPF a due proprietà

Al momento ho questo:

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

Ma ho bisogno che Message proprietà di essere vincolato alle due proprietà.

Ovviamente non può essere fatto in questo modo, ma questo può contribuire a spiegare che cosa è che voglio:

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

Possibile duplicato: https://stackoverflow.com/q/2552853/1518546 –

risposta

23

Prova Usa il MultiBinding:

descrive una collezione di oggetti di legame fissata al una singola proprietà target vincolante.

Esempio:

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

Esattamente quello che mi serviva, grazie! –

+0

Questo è un modo orribilmente prolisso per raggiungere questo obiettivo. –

6

Non si può fare And operazione in XAML.

Creare la proprietà wrapper nella classe del modello di vista che restituirà e di due proprietà e associare invece quella proprietà.

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

XAML

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

Un altro approccio sarebbe quello di utilizzare MultiValueConverter. Passa due proprietà e restituisci E valore dal convertitore.

+0

Quello che hai postato non è un 'bitwise AND'. È solo un operatore 'AND'. In ogni caso, penso che volesse qualunque sia il tipo, concatenato. – gleng

+2

Sì. Ma OP non ha menzionato nulla in questione e dato che non possiamo '&&' stringhe (o tutti i tipi). Quindi, pensavo che l'OP volesse una proprietà bool. Si aggiornerà una volta che OP cancella l'immagine. –

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

semplicemente il migliore !! – Ranger

Problemi correlati