Как установить свойство элемента управления на основе свойства другого элемента управления в wpf - PullRequest
2 голосов
/ 26 августа 2009

У меня есть сценарий, в котором на основе текстового значения текстового поля я должен отключить и включить кнопку, скажем, для TextBox.Text = "abc" или "cdf" кнопка должна быть отключена, а для других значений она должна быть включена.

это должно быть написано только на Xaml.

Заранее спасибо

Ответы [ 2 ]

7 голосов
/ 26 августа 2009

Похоже, что вы можете использовать триггеры для этого:

Кнопка отключается, когда значение ABC вводится в текстовое поле, а затем включается, когда значение изменяется на что-то отличное от ABC.

<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>

2 голосов
/ 26 августа 2009

Это невозможно сделать строго в XAML, и при этом такое требование не имеет смысла. Это бизнес-логика, которая должна проявляться в модели представления:

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"; }
    }
}

Тогда в вашем XAML:

<TextBox Text="{Binding Text}"/>
<Button IsEnabled="{Binding IsButtonEnabled}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...