我有一個用戶控件,我需要從另一個窗口訪問該用戶控件上的標籤..例如...只需更改標籤的文本。例如..用戶控件上的訪問控制
Usercontrol.label1.content = "Got it"
我可以在主窗口做訪問任何控制以下內容:
Public main As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
如何做到這一點在WPF用戶控件?
我有一個用戶控件,我需要從另一個窗口訪問該用戶控件上的標籤..例如...只需更改標籤的文本。例如..用戶控件上的訪問控制
Usercontrol.label1.content = "Got it"
我可以在主窗口做訪問任何控制以下內容:
Public main As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
如何做到這一點在WPF用戶控件?
要訪問主窗口:
Dim Main = TryCast(Application.Current.MainWindow, MainWindow);
如果你的用戶控件定義靜態這樣的:
<local:UserControl1 x:Name="uc" />
你可以使用它的名字一樣:Main.uc.label1.Text = "Hello World"
如果你的用戶控件動態添加到一個容器中,嘗試以下操作:
如果您的用戶控件位於邊框中:
Dim control = Main.MyBorder.Child as MyUserControl
control.label1.Text = "Hello World"
如果在你的容器的多個用戶控件,如(StackPanel中/表格/ Wrappanel等):
Dim controls = Main.MyStackPanel.Childern.OfType(Of MyUserControl)()
For Each control In controls
control.label1.Text = "Hello World"
Next
即使你可以通過檢查它的變量來得到你想要的確切用戶控件!
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"
一旦您獲得了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" />
您不需要「訪問」任何地方的任何標籤。使用視圖模型並在XAML中適當地綁定它的屬性。 –