我有这个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; }
:
propertyName = Name.Text;
目前代码有效但按钮无效,无论点击哪个按钮(保存或取消),该属性都已更新。我没有使用MVVM,有人对此有任何想法吗?如果可能的话,我正在寻找XAML解决方案。
主要问题是: 有没有办法在XAML中做到这一点,如果有,那怎么样?如果没有办法,我可以在这种情况下使用Binding,当我可以在click事件中设置属性时?由于我只有一个属性,因此我只需在按钮的点击事件中使用{{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>