我有两个名为txtChange
和txtStatus
的文本框。 XAML
代码如下。
<TextBox Height="29" HorizontalAlignment="Left" Margin="418,385,0,0" Name="txtChange" VerticalAlignment="Top" Width="264" Text="Make a selection in this textbox" SelectionChanged="txtChange_SelectionChanged" />
<TextBox Height="87" HorizontalAlignment="Left" Margin="418,438,0,0" Name="txtStatus" VerticalAlignment="Top" Width="264" Text="Initialized text" IsReadOnly="True"/>
现在我为一个文本框定义了一个selectionChanged事件:
private void txtChange_SelectionChanged(object sender, RoutedEventArgs e)
{
TextBox txt2 = sender as TextBox;
txtStatus.Text = "Selection is " + txt2.SelectedText + "";
}
有人可以解释一下发生了什么吗?我在MainWindow构造函数中只有InitializeComponent();
。
编辑:当我没有在XAML中初始化Text时,问题得到解决。知道为什么吗?
答案 0 :(得分:0)
问题出在event SelectionChanged
中,这是在初始化时引发的。初始化TextBox
txtChange并为Text
属性分配引发的事件时,我们在txtStatus
中获得空引用异常,因为它仍未初始化。 InitializeComponent();
初始化您的UI,您可以在Obj \ Debug | Release文件夹文件中找到MainWindow.g.cs和MainWindow.i.cs文件,其中包含自动生成的InitializeComponent();
代码。
答案 1 :(得分:0)
如果您希望第二个TextBox显示第一个TextBox的文本,请使用以下XAML
<TextBlock Height="87" HorizontalAlignment="Left" Margin="418,438,0,0" Name="txtStatus" VerticalAlignment="Top" Width="264" Text="{Binding SelectedText, ElementName=txtChange}"/>
请注意,我已将TextBox
更改为TextBlock
,并且我将文本绑定到文本框的SelectedText