Обновлять propertyName по тексту TextBox только при нажатии кнопки - PullRequest
0 голосов
/ 08 мая 2018

У меня есть этот код XAML:

<Window 
    DataContext="{Binding RelativeSource={RelativeSource Self}}">
<StackPanel>
    <StackPanel>
        <TextBox x:Name="Name" Text="{Binding propertyName, UpdateSourceTrigger=PropertyChanged}"/>
        <Button Content="Save" Click="Add_Click" IsDefault="True" />
        <Button Content="Cancel" IsCancel="True" />
    </StackPanel>
</StackPanel>
</Window>

Я хочу привязать текстовое поле Name к propertyName, только когда нажата моя кнопка Save. propertyName объявлено в моем MainWindow.xaml.cs так:

public string propertyName { get; set; }

В настоящее время код работает, но кнопки бесполезны, независимо от того, какая кнопка (Сохранить или Отмена) нажата, свойство уже обновлено. Я не использую MVVM, у кого-нибудь есть идеи по этому поводу? Я ищу решение XAML, если это возможно.

Основной вопрос: Есть ли способ сделать это только в XAML, если есть, то как? И если нет никакого способа, зачем мне вообще использовать Binding в этом случае, когда я могу просто установить свойство в моем событии click? Поскольку у меня есть только одно свойство, я мог бы просто использовать propertyName = Name.Text; в событии нажатия кнопки

1 Ответ

0 голосов
/ 08 мая 2018
<Grid>
    <StackPanel>
        <TextBox Width="100" Height="20"  Background="Green">
            <TextBox.Resources>
                <Style TargetType="{x:Type TextBox}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=button1, Path=IsChecked}" Value="True">
                            <Setter Property="Text" Value="{Binding propertyName, Mode=OneWay}"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Resources>
        </TextBox>
        <ToggleButton Name="button1" Width="100" Content="save">
        </ToggleButton>
    </StackPanel>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...