我有一个用户控件,我需要从另一个窗口访问该用户控件上的标签。例如......只需更改标签的文本即可。实施例..
Usercontrol.label1.content = "Got it"
我可以通过执行以下操作访问MainWindow上的任何控件:
Public main As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
如何在WPF中为用户控件执行此操作?
答案 0 :(得分:0)
访问MainWindow:
Dim Main = TryCast(Application.Current.MainWindow, MainWindow);
如果您的UserControl静态定义如下:
<local:UserControl1 x:Name="uc" />
您可以使用它的名称:Main.uc.label1.Text = "Hello World"
如果您的UserControl动态添加到容器中,请尝试以下操作:
如果您的UserControl位于边框:
Dim control = Main.MyBorder.Child as MyUserControl
control.label1.Text = "Hello World"
如果容器中有多个UserControl,例如(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"
答案 1 :(得分:-1)
获得UserControl
所在窗口的引用后,您可以使用此引用访问它。
因此,如果UserControl
例如在名为Window1
的窗口中定义,则可以通过以下方式从另一个窗口访问它:
Dim window1 As Window1 = Application.Current.Windows.OfType(Of Window1).FirstOrDefault()
window1.uc.label1.Text = "1"
这当然假设屏幕上有Window1
已打开且可见,并且您在窗口的XAML标记中为UserControl
元素提供了x:Name
:
<local:UserControl1 x:Name="uc" />