C# 从MainWindow.xaml.vb设置usercontrol的变量值

C# 从MainWindow.xaml.vb设置usercontrol的变量值,c#,wpf,vb.net,background,C#,Wpf,Vb.net,Background,好的,我有一个MainWindow和一个用户控件,当加载MainWindow时,它在运行时包含在MainWindow中。 现在我想从主窗口更改Usercontrol的网格背景 我试过: Sub button_click(...) Handles button.click UserControl1.grid1.Background = CType(FindResource(AdonisUI.Brushes.Layout4BackgroundBrush), Brush) End Sub 但这在代码

好的,我有一个MainWindow和一个用户控件,当加载MainWindow时,它在运行时包含在MainWindow中。 现在我想从主窗口更改Usercontrol的网格背景

我试过:

Sub button_click(...) Handles button.click
UserControl1.grid1.Background = CType(FindResource(AdonisUI.Brushes.Layout4BackgroundBrush), Brush)
End Sub
但这在代码建议框中给了我一个错误,如下所示:

Reference to a non-shared member requires an object reference.
我也试过:

Sub button_click(...) Handles button.click
Dim u = Application.Current.Windows.OfType(Of BuildUIContainer).FirstOrDefault
u.grid1.Background = CType(FindResource(AdonisUI.Brushes.Layout4BackgroundBrush), Brush)
End Sub

代码可以编译,但单击按钮时网格的背景颜色不会改变。

由于您在加载
事件期间创建
用户控件
,因此您可以将对该控件的引用存储在变量中,并在稍后阶段直接使用该控件访问它,例如:

Private theUserControl As UserControl1

Sub OnLoaded(...) Handles Loaded
    theUserControl = New UserControl1()
    ...
End Sub

Sub button_click(...) Handles button.click
    theUserControl.Background = ...
End Sub

哪里是定义的
AdonisUI.brush.Layout4BackgroundBrush
资源?@mdziadowiec它随AdonisUI命名空间的导入而来。我的意思是在主窗口的顶部添加一行“Imports AdonisUI”。@mm8在主窗口中。Loaded事件中。@mm8问题用接受的答案解决了。