2016-12-05 4 views
2

Ich möchte eine binding mit einem "bedingten" Preisformat machen.xaml bedingt StringFormat

Genauer gesagt, wenn eine andere Eigenschaft ist true: Anzeige Preis ohne Prozentsatz, wenn es bei false ist, zeigen Preis mit Prozentsatz an. Gibt es eine Möglichkeit, diesen Fall mit XAML zu behandeln oder sollte ich nur eine String-Preis-Eigenschaft in meinem Code-Behind-Code machen?

+0

kann ich denke an zwei anderen Lösungen - zunächst ein Valueconverter ist, wo Sie den Zustand als Befehlsparameter übergeben. Die zweite verwendet einen Trigger, bei dem Sie das ['StringFormat'] (https://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat (v = vs.110) .aspx) setzen) basierend auf der Bedingung. Ich denke, es kommt darauf an, was Sie bevorzugen. IMO gibt es keine falschen Wege, dies zu lösen (solange Sie nach Konsistenz streben). – Default

+2

Apropos MVVM eine einfache Eigenschaft in entsprechenden (Element?) View-Modell wird tun. Ich habe oft normale Eigenschaften (z. B. "double Value"), die mit einer solchen Logik ("string ValueText") einhergehen. – Sinatr

+0

@Sinatr ja ich werde bei dieser Lösung bleiben – Guillaume07

Antwort

2

Sie können DataTrigger wie dieses WPF DataBinding with an conditional expression verwenden. Und für andere Wertformate können Sie verschiedene Converters verwenden.

Zum Beispiel:

<UserControl.Resources> 
    <converters:ToPercentage x:Key="ToPercentage"/> 
</UserControl.Resources> 

<TextBox> 
    <TextBox.Style> 
     <Style TargetType="TextBox"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=AnotherProperty}" Value="True"> 
        <Setter Property="Text" Value="{Binding Path=Price}"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=AnotherProperty}" Value="False"> 
        <Setter Property="Text" Value="{Binding Path=Price, Converter={StaticResource ToPercantage}}"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBox.Style> 
</TextBox> 
Verwandte Themen