从 MainWindow.xaml.vb 设置用户控件的变量值

Set variable values of usercontrol from MainWindow.xaml.vb

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

我试过:

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

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

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

Private theUserControl As UserControl1

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

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