3 Stimmen

Wie man Eigenschaft eines Steuerelements auf der Grundlage der anderen Steuerelement-Eigenschaft in wpf festlegen

Ich habe ein Szenario, wo auf der Grundlage des Textfelds Text Wert, den ich deaktivieren und aktivieren die Schaltfläche sagen haben, Für TextBox.Text="abc" oder "cdf" soll die Schaltfläche deaktiviert und für andere Werte aktiviert werden.

dies muss nur in Xaml geschrieben werden.

Vielen Dank im Voraus

7voto

Crispy Punkte 5477

Sieht so aus, als könnten Sie dafür Trigger verwenden:

Die Schaltfläche wird deaktiviert, wenn der Wert ABC in das Textfeld eingegeben wird, und wird dann aktiviert, wenn sich der Wert in einen anderen Wert 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>

2voto

Kent Boogaart Punkte 170094

Dies ist in XAML nicht möglich, und eine solche Anforderung ist auch nicht sinnvoll. Dies ist Geschäftslogik, die in einem Ansichtsmodell 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 Ihrer XAML:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X