我非常抱歉,這個問題是非常基本的。我剛剛學會了WPF,並且我未能簡單地將textbox.text的兩種方式綁定到字符串屬性。綁定簡單的WPF文本框文本TwoWay
XAML代碼:
<Window x:Class="WpfApplication1.MainWindow"
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:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid x:Name="StuInfo">
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="10,26,0,0" TextWrapping="Wrap" Text="{Binding Path=str,Mode=TwoWay}" VerticalAlignment="Top" Width="120"/>
<Button x:Name="button" Content="Check" HorizontalAlignment="Left" Margin="10,67,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>
</Grid>
C#代碼
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
str = "OK";
}
public string str { get; set; }
private void button_Click(object sender, RoutedEventArgs e)
{
Console.WriteLine(str);
}
}
首先,文本框不顯示 「OK」,但它是空白。然後,我在文本框中輸入了不同的文本,例如:「blablabla」沒有引號。然後我點擊按鈕來檢查我的str屬性是否已經更新。顯然,str仍然包含「OK」。
我在這裏做錯了什麼?我錯過了什麼讓綁定工作?
或者你可以設置你的DataContext到這個,但這真是個壞主意。你應該分開你的ViewModel和你的視圖。 –
因此,設置DataContext解決了這個問題。無論如何,我可以使它工作而不必實例化一個對象,直接使用字符串屬性?這個問題的答案是將DataContext設置爲這個嗎? – kurakura88
你可以綁定到窗口後面的代碼,沒有什麼錯:'public MainWindow {InitializeComponent(); ** DataContext = this; **}' – slugster