用户控制的访问控制
Access controls on User Control
我有一个用户控件,我需要从另一个 Window.. 访问该用户控件上的标签。示例...只需更改标签的文本。示例..
Usercontrol.label1.content = "Got it"
我可以通过执行以下操作访问 MainWindow 上的任何控件:
Public main As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
如何为 WPF 中的用户控件执行此操作?
获得 UserControl
所在的 window 的引用后,您可以使用此引用访问它。
因此,如果 UserControl
例如在名为 Window1
的 window 中定义,您可以通过以下方式从另一个 window 访问它:
Dim window1 As Window1 = Application.Current.Windows.OfType(Of Window1).FirstOrDefault()
window1.uc.label1.Text = "1"
这当然假设有一个 Window1
打开并在屏幕上可见,并且您在 XAML 的标记中给 UserControl
元素一个 x:Name
window:
<local:UserControl1 x:Name="uc" />
访问主窗口:
Dim Main = TryCast(Application.Current.MainWindow, MainWindow);
如果您的 UserControl 是这样静态定义的:
<local:UserControl1 x:Name="uc" />
您可以直接使用它的名称:Main.uc.label1.Text = "Hello World"
如果您的 UserControl 是动态添加到容器中的,请尝试以下操作:
如果您的用户控件位于边框中:
Dim control = Main.MyBorder.Child as MyUserControl
control.label1.Text = "Hello World"
如果您的容器中有多个用户控件,例如(StackPanel/Grid/Wrappanel 等):
Dim controls = Main.MyStackPanel.Childern.OfType(Of MyUserControl)()
For Each control In controls
control.label1.Text = "Hello World"
Next
即使您可以通过检查它具有的变量来获得您想要的确切 UserControl!
Dim control = Main.MyStackPanel.Childern.OfType(Of MyUserControl)().Where(Function(x) x.label1.Text = "myLabel").FirstOrDefault()
//You can access any variable that exists in your UserControl by 'x'
control.label1.Text = "Hello World"
我有一个用户控件,我需要从另一个 Window.. 访问该用户控件上的标签。示例...只需更改标签的文本。示例..
Usercontrol.label1.content = "Got it"
我可以通过执行以下操作访问 MainWindow 上的任何控件:
Public main As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
如何为 WPF 中的用户控件执行此操作?
获得 UserControl
所在的 window 的引用后,您可以使用此引用访问它。
因此,如果 UserControl
例如在名为 Window1
的 window 中定义,您可以通过以下方式从另一个 window 访问它:
Dim window1 As Window1 = Application.Current.Windows.OfType(Of Window1).FirstOrDefault()
window1.uc.label1.Text = "1"
这当然假设有一个 Window1
打开并在屏幕上可见,并且您在 XAML 的标记中给 UserControl
元素一个 x:Name
window:
<local:UserControl1 x:Name="uc" />
访问主窗口:
Dim Main = TryCast(Application.Current.MainWindow, MainWindow);
如果您的 UserControl 是这样静态定义的:
<local:UserControl1 x:Name="uc" />
您可以直接使用它的名称:Main.uc.label1.Text = "Hello World"
如果您的 UserControl 是动态添加到容器中的,请尝试以下操作:
如果您的用户控件位于边框中:
Dim control = Main.MyBorder.Child as MyUserControl
control.label1.Text = "Hello World"
如果您的容器中有多个用户控件,例如(StackPanel/Grid/Wrappanel 等):
Dim controls = Main.MyStackPanel.Childern.OfType(Of MyUserControl)()
For Each control In controls
control.label1.Text = "Hello World"
Next
即使您可以通过检查它具有的变量来获得您想要的确切 UserControl!
Dim control = Main.MyStackPanel.Childern.OfType(Of MyUserControl)().Where(Function(x) x.label1.Text = "myLabel").FirstOrDefault()
//You can access any variable that exists in your UserControl by 'x'
control.label1.Text = "Hello World"