Wpf 修改文本块。窗口中的页面文本
我正在尝试更改窗口中文本块的文本。我一直收到NullReferenceException。我该如何解决这个问题 欢迎光临Wpf 修改文本块。窗口中的页面文本,wpf,data-binding,Wpf,Data Binding,我正在尝试更改窗口中文本块的文本。我一直收到NullReferenceException。我该如何解决这个问题 欢迎光临 <TextBlock x:Name="StartNotice" HorizontalAlignment="Left" Margin="247,252,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.595,0.627"
<TextBlock x:Name="StartNotice" HorizontalAlignment="Left" Margin="247,252,0,0"
TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.595,0.627"
Text="Say "abracadabra" to start ." FontStyle="Italic"
TextAlignment="Center" Foreground="Purple" Width="150"/>
MainWindow.xaml.cs
try
{
myKinect=KinectSensor.KinectSensor[0];
}
catch
{
Welcome welcomePage=(Welcome)this.DataContext();
welcomePage.StartNotice.Text="Please connect a Kinect";
}
Welcome welcomePage;
public MainWindow() {...welcomePage = new Welcome(this);}
可以使用MVVM模式轻松修改控件的属性。另一种更好的方法是通过视图模型对其进行更改。我只是想知道您是在哪里尝试更改“StartNotice”的文本的?…因为据我所知,没有什么比在try{}块中定义StartNotice.text更好的了 我很抱歉没有做出回应。我实施的解决方案描述如下: 我的申请结构如下: 窗口-主窗口 页面-欢迎、登录、菜单、任务 使用“导航到”功能加载页面:
private void navigateTo(Page page) {this.Content=page;} // <this> is MainWindow
欢迎使用.xaml.cs
private void Page_Loaded(object sender, RoutedEventArgs e)
{
MainWindow mainWindow=new MainWindow();
mainWindow.DataContext=this;
mainWindow.Show();
}
MainWindow mainWindow;
public Welcome(MainWindow windowMain)
{
mainWindow=windowMain;
}
更改StartNotice的内容非常简单:
setupKinect()
{
...StartNotice.Text="Please connect a Kinect";... //used in a try-catch block
}
welcomePage=(Welcome)this.DataContext;已尝试从DataContext中删除参数。仍然引发异常:NullReferenceException未经处理…对象引用未设置为对象的实例。哪行代码导致引发异常?您是否从调试器检查了MainWindow.xaml.cs中的welcomePage对象?应用程序的结构是什么?我想知道为什么当欢迎页面加载时,您会创建一个主窗口,然后在显示主窗口之前将主窗口数据上下文设置到该页面。哪个对象承载页面?MainWindow.xaml.cs中的代码是如何调用的?我断开了Kinect的连接,以便启动catch块。如果我放置MessageBox.Show()而不是尝试更改welcomePage.StartNotice.Text,则一切正常。因为您只是在赋值,所以可以尝试以下代码。Welcome welcomePage=新欢迎();welcomePage.StartNotice.Text=“请连接Kinect”;我将进一步研究MVVM模式。从Channel9的教程开始,MVVM DevReady,但由于我是C#、.NET、WPF新手,并且不得不使用开发文档对Kinect进行编程,所以我没有时间完成一个项目。该应用程序将非常简短,主要集中于运动交互和语音识别,并集成来自RTLS的数据。