2009-08-26 14 views
2
setzt

Ich habe ein Szenario, in dem ich basierend auf dem Textwert der Textbox die Schaltfläche say, für TextBox.Text = "abc" oder " cdf "Die Schaltfläche sollte deaktiviert sein und für andere Werte sollte sie aktiviert sein.Wie man die Eigenschaft eines Steuerelements basierend auf der Eigenschaft des anderen Steuerelements in wpf

Dies muss nur in Xaml geschrieben werden.

Dank im Voraus

+0

Warum Sie dafür bekommen haben eine Anforderung nur in XAML geschrieben werden? –

Antwort

2

dies nicht möglich ist, streng in XAML zu tun, und auch nicht eine solche Anforderung Sinn machen. Dies ist die Geschäftslogik, die in einer Ansicht Modell manifestiert werden sollte:

public class MyViewModel : ViewModel 
{ 
    private string _text; 

    public string Text 
    { 
     get { return _text; } 
     set 
     { 
      if (_text != value) 
      { 
       _text = value; 
       OnPropertyChanged("Text"); 
       OnPropertyChanged("IsButtonEnabled"); 
      } 
     } 
    } 

    public bool IsButtonEnabled 
    { 
     get { return _text != "abc"; } 
    } 
} 

Dann in XAML:

<TextBox Text="{Binding Text}"/> 
<Button IsEnabled="{Binding IsButtonEnabled}"/> 
+1

Sie können es mit Triggern wie in einer anderen Antwort auf diese Frage tun, aber ich stimme zu, dass es stattdessen im ViewModel getan werden sollte. – LJNielsenDk

7

Sieht aus wie Sie Trigger verwenden können, dies zu tun:

Taste wird deaktiviert wenn der Wert ABC in das Textfeld eingegeben wird und dann aktiviert wird, wenn der Wert sich in etwas anderes als ABC ändert.

<Window x:Class="WpfApplication5.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" Height="300" Width="300"> 

<Window.Resources> 
    <Style x:Key="disableButton" TargetType="{x:Type Button}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ElementName=textBox1,Path=Text}" Value="ABC"> 
       <Setter Property="IsEnabled" Value="False" /> 
      </DataTrigger> 

     </Style.Triggers> 
    </Style> 
</Window.Resources> 

<StackPanel> 
    <TextBox x:Name="textBox1"/> 
    <Button Style="{StaticResource disableButton}" Height="23" Name="button1" Width="75">Button</Button> 
</StackPanel> 

Verwandte Themen