从不同的类访问控件

时间:2012-06-18 23:59:13

标签: c# wpf xaml

我需要从不同的类访问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>

请给我一些指示,找出原因或错误。

谢谢, 阿米特

3 个答案:

答案 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!"; }));