我確定這是非常簡單的事情,但我無法弄清楚。我在這裏和MSDN搜索,一直無法找到答案。我需要能夠通過richtextbox.Selection.Select(TextPointer1,Textpointer2)設置richtextboxes選擇。如何從wpf中的另一個窗口訪問一個窗口的控件(richtextbox)?
5
A
回答
14
Application.Current
包含在你的應用程序的所有窗口的集合,你可以用一個查詢,如
var window2 = Application.Current.Windows
.Cast<Window>()
.FirstOrDefault(window => window is Window2) as Window2;
其他窗口,然後你可以從引用控制你的代碼,如
var richText = window2.MyRichTextBox
2
你不能從另一個窗口訪問texbox,因爲它是專用於該窗口中,您可以通過暴露在RichTextBox作爲公共財產的窗口(破解版),但是解決這個
public RichTextBox RichTextBox {
get{
//the RichTextBox would have a property x:Name="richTextbox" in the xaml
return richTextBox;
}
}
1
你應該能夠訪問控制Window1 from Window2後面的代碼,如果這就是你想要的。生成的字段是internal by default。
所有你需要的是命名上控制窗口1,像這樣:
<RichTextBox x:Name="richtextbox" ... />
在窗口2後面的代碼:
var window = new Window1(); // or use the existing instance of Window1
window.richtextbox.Selection.Select(TextPointer1, Textpointer2);
一個更好的選擇將是封裝選擇操作在Window1後面的代碼中,避免泄露內部。然後,你將有:
// Window1.cs
public void Select(int param1, int param2)
{
richtextbox.Selection.Select(param1, param2);
}
// Window2.cs
var window = new Window1(); // or use the existing instance of Window1
window.Select(TextPointer1, Textpointer2);
5
Application.Current.Windows.OfType(Of MainWindow).First
相關問題
- 1. 從另一個程序集訪問WPF窗口控件
- 2. WPF窗口更改另一個窗口的控件的值
- 3. 如何從另一個類或窗口訪問WPF中的控件
- 4. 從另一個類的訪問窗口
- 5. 觸發事件從另一個WPF窗口WPF窗口
- 6. wpf將控件從一個窗口轉移到另一個窗口
- 7. 如何從另一個窗口在WPF
- 8. WPF導航從一個窗口到另一個窗口內
- 9. 在另一個wpf窗口內部有一個wpf窗口
- 10. WPF。如何從另一個窗口隱藏/顯示主窗口
- 11. MATLAB GUI - 如何從另一個窗口控制一個窗口中的動作?
- 12. 訪問從另一個窗口
- 13. 如何從另一個運行窗口窗體中訪問控件c#
- 14. 主機在另一個WPF窗口中的WPF窗口
- 15. SDL1.2,另一個窗口中的窗口
- 16. 用另一個窗口控制另一個窗口
- 17. 如何從一個WPF窗口將類數組返回到另一個窗口?
- 18. 如何將WPF UserControl從一個窗口移動到另一個窗口?
- 19. 另一個WPF窗口前面的WPF窗口
- 20. 關閉WPF中的另一個窗口
- 21. 從非窗口類訪問WPF控件
- 22. 從WPF窗口訪問所有控件
- 23. 如何從一個新窗口在同一個命名空間的打開窗口中訪問控件?
- 24. 從另一個窗口打開WPF窗口
- 25. 在另一個窗口中訪問UserControl控件
- 26. 如何檢測從另一個窗口拖動的窗口?
- 27. 如何從另一個WPF窗口向另一個WPF窗口發送字符串或任何其他值?
- 28. 另一個窗口中的一個窗口的VisualBrush
- 29. 從c中的子窗口訪問父窗口中的控件#
- 30. 如何從一個窗口執行一個功能到另一個窗口?
實際上,只會如果Windows是在不同的組件需要這個技巧,因爲默認情況下字段訪問是內部的,甚至可以使用x:FieldModifier屬性來更改。 MSDN: 在使用XAML,部分類和代碼隱藏的WPF應用程序項目的標準構建配置下,指定的x:Name將成爲在處理XAML時在基礎代碼中創建的字段的名稱,並且該字段擁有對該對象的引用。 默認情況下,創建的字段是內部的。您可以通過指定x:FieldModifier屬性來更改字段訪問權限。 – 2010-02-08 02:04:08
我已經嘗試將richtextbox x:FieldModifier屬性更改爲public,但它仍然不可見於第二個窗口。我可能做錯了什麼?我正在使用visual studio 2010 beta 2,這會有什麼不同? – Justin 2010-02-08 02:25:29
根據x:Name的MSDN信息,它也適用於.NET 4.0。你確定使用window1的實例而不是類名來訪問控件嗎?爲了獲得窗口的實例,請看Ian的答案。 您可以發佈您訪問richtextbox的代碼嗎? – 2010-02-08 02:40:46