【发布时间】:2018-11-21 11:23:36
【问题描述】:
我似乎无法将控件的值绑定到对象。我想将TextBox 绑定到string 对象,想法是当文本框的文本更改时,它也应该自动更改对象。无法弄清楚我做错了什么。这是我尝试过的:
MainWindow.xaml.cs:
public partial class MainWindow : Window
{
string str;
public MainWindow()
{
InitializeComponent();
this.DataContext = str;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
}
}
和 MainWindow.xaml:
<Window x:Class="WpfApp1.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:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="150" Width="150">
<Grid Margin="0,0,642,319">
<TextBox HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="{Binding str}" VerticalAlignment="Top" Width="120" Margin="0,0,-120,-46" />
<Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Click="Button_Click" Height="23" Margin="0,28,-75,-51" RenderTransformOrigin="0.423,2.257" />
</Grid>
</Window>
所以,当我在文本框中输入内容并单击按钮时,我应该在调试时看到 str 中的文本,但它始终是 null
【问题讨论】:
-
如果您为其指定名称,则可以直接在代码中访问文本框:
<TextBox x:Name="MyTextBox" HorizontalAlignment="Left" Height="23" ... />。在后面的代码中:var x = MyTextBox.Text或MyTextBox.Text = "Hello World" -
@croxy,谢谢,我知道。但问题是,我有一个由 5-6 个控件组成的完整表单。我不想在最后手动单独处理所有这些。
-
这个答案可能对你有帮助:stackoverflow.com/a/6022711/5453249
-
从这里开始阅读:Data Binding Overview。您应该创建一个具有公共字符串属性的类并将其实例分配给 DataContext。
-
声明一个公共的自动属性 str - public string { get;放;并设置 DataContext = this;
标签: c# wpf data-binding