仅在单击按钮时通过TextBox的文本更新propertyName

时间:2018-05-08 05:42:03

标签: c# wpf

我有这个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文本框绑定到SavepropertyNameMainWindow.xaml.cs中声明为public string propertyName { get; set; }

propertyName = Name.Text;

目前代码有效但按钮无效,无论点击哪个按钮(保存或取消),该属性都已更新。我没有使用MVVM,有人对此有任何想法吗?如果可能的话,我正在寻找XAML解决方案。

主要问题是: 有没有办法在XAML中做到这一点,如果有,那怎么样?如果没有办法,我可以在这种情况下使用Binding,当我可以在click事件中设置属性时?由于我只有一个属性,因此我只需在按钮的点击事件中使用{{1}}

1 个答案:

答案 0 :(得分:1)

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