我需要从不同的类访问XAML中的控件,例如一个名为myTextBox的文本框。这就是我所做的但却出错:
Windows1 w = new Windows1();
w.myTextBox.text = "Hello!";
但是,我收到一条错误消息:
'设置属性'System.Windows.Controls.ContentControl.Content'扔了 例外。
粘性错误指向
<Grid Margin="10">
<Grid.RowDefinitions> <!-- error points to this line -->
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
请给我一些指示,找出原因或错误。
谢谢, 阿米特
答案 0 :(得分:1)
还有其他事情正在发生,因为我能够在一个简单的应用程序中使用它,而不会做任何棘手的事情。那你的场景还有什么呢?你的“不同”类是在后台线程中运行的吗?如果是这样,您可能需要使用调度程序来访问UI线程。
答案 1 :(得分:1)
检查出来:https://github.com/kaisellgren/Git-GUI/blob/master/Libraries/UIHelper.cs
它将在可视树中找到给定项目的Child。
用法:
var recentCommitMessages = UIHelper.FindChild<ComboBox>(this, "RecentCommitMessages");
此处它将搜索所有ComboBox元素,其中一个ID为“RecentCommitMessages”
答案 2 :(得分:0)
w.Dispatcher.Invoke(new Action(() => { w.myTextBox.text = "Hello!"; }));