C# 从MainWindow.xaml.vb设置usercontrol的变量值
好的,我有一个MainWindow和一个用户控件,当加载MainWindow时,它在运行时包含在MainWindow中。 现在我想从主窗口更改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 但这在代码
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问题用接受的答案解决了。