【发布时间】:2015-05-16 21:27:51
【问题描述】:
我有一个字符串 Properties.Settings.Default.myString 和两个文本框
<TextBox x:Name="textBox1" Text="{Binding myString}"/>
<TextBox x:Name="textBox2" Text="{Binding myString}"/>
当我在 textBox1 中输入文本并更改焦点时,textBox2 中的文本会更新为我刚刚在 textBox1 中输入的文本。
让我感到困惑的是Properties.Settings.Default.myString 永远不会随着我在任一文本框中输入的文本而更新。我确实通过在更改后在调试器中检查myString来确认这一点。
我的问题是,为什么 textBox 中的这种变化没有反映在绑定变量 myString 中?
完整的 XAML(WPF 应用):
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:textBoxDataBinding"
xmlns:Properties="clr-namespace:textBoxDataBinding.Properties" x:Class="textBoxDataBinding.MainWindow"
mc:Ignorable="d"
Title="MainWindow" Height="212" Width="318">
<Window.DataContext>
<Properties:Settings/>
</Window.DataContext>
<Grid>
<TextBox x:Name="textBox1" Text="{Binding myString}"/>
<TextBox x:Name="textBox2" Text="{Binding myString}"/>
<!-- Button does: textBlock.Text = Properties.Settings.Default.myString; -->
<Button x:Name="button1" Content="Button" HorizontalAlignment="Left" Margin="10,157,0,0" VerticalAlignment="Top" Width="75" Click="button1_Click"/>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="90,161,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/>
</Grid>
【问题讨论】:
-
我做到了,但这不是问题,因为
Save()只会保存myString的当前状态。但是myString永远不会更新。不过,感谢您的提示。
标签: c# wpf xaml data-binding