Estoy seguro de que esto es algo muy simple, pero no puedo resolverlo. He buscado aquí y en msdn y no he podido encontrar la respuesta. Necesito poder establecer la selección de richtextboxes a través de richtextbox.Selection.Select (TextPointer1, Textpointer2).¿Cómo puedo acceder al control de una ventana (richtextbox) desde otra ventana en wpf?
Respuesta
Application.Current
contiene una colección de todas las ventanas en que la aplicación, se puede conseguir que la otra ventana con una consulta como
var window2 = Application.Current.Windows
.Cast<Window>()
.FirstOrDefault(window => window is Window2) as Window2;
y luego se puede hacer referencia al control de su código, como en
var richText = window2.MyRichTextBox
Usted no puede acceder a la TexBox de otra ventana, ya que es privado para esa ventana sin embargo se puede evitar esto, se exponen RichTextBox como una propiedad pública en su ventana (truco)
public RichTextBox RichTextBox {
get{
//the RichTextBox would have a property x:Name="richTextbox" in the xaml
return richTextBox;
}
}
Usted debe ser capaz para acceder a los controles en Ventana1 desde código de Window2 atrás, si eso es lo que desea. Los campos generados son internal by default.
Todo lo que necesita es un nombre al control de Window1, así:
<RichTextBox x:Name="richtextbox" ... />
En Window2 código detrás:
var window = new Window1(); // or use the existing instance of Window1
window.richtextbox.Selection.Select(TextPointer1, Textpointer2);
Una mejor opción sería la de encapsular operación de selección en un método en el código detrás de Window1, para evitar regalar interno. De allí tendría que tener:
// 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);
Application.Current.Windows.OfType(Of MainWindow).First
- 1. WPF. Cómo ocultar/mostrar la ventana principal desde otra ventana
- 2. Tener una ventana wpf dentro de otra ventana wpf
- 3. WPF - Traer ventana al frente
- 4. Ventana nativa Win32 en WPF Control
- 5. ¿Cómo puedo acceder al árbol dom de la ventana secundaria?
- 6. Agregue un control de usuario a una ventana de wpf
- 7. ¿Minimiza una ventana en WPF?
- 8. WPF: Cómo iniciar desde una ventana en un montaje distinto
- 9. ¿Cómo llamar al método de la ventana principal de WPF desde la ventana modal?
- 10. ¿Cómo abrir una nueva ventana secundaria desde otra ventana secundaria en vaadin?
- 11. Recomendaciones para crear una ventana de registro en WPF
- 12. ¿Cómo llevar una ventana de WPF al frente?
- 13. Abrir ventana wpf desde otro proyecto
- 14. Obtener System.Windows.Forms.IWin32Window desde la ventana de WPF
- 15. Precarga de ventana WPF
- 16. Probando el control WPF sin agregarlo a una ventana
- 17. ¿Puede una ventana estar siempre encima de otra ventana?
- 18. ¿Cómo puedo abrir una ventana emergente WPF con un retraso?
- 19. Windows 7: ¿cómo llevar una ventana al frente sin importar qué otra ventana tenga foco?
- 20. diseño de WPF en una ventana
- 21. Cómo rotar una ventana de WPF?
- 22. cerrar una ventana de otro en WPF
- 23. ventana de WPF que aloja usercontrol
- 24. WPF Ventana establecida Enfoque
- 25. Error al crear un control OpenGL en una ventana wpf en windows 7
- 26. Ventana sin bordes en WPF
- 27. ¿Cómo acceder al control de cuadro de texto de Winform desde otra clase?
- 28. ¿Cómo obtener una referencia estática a una ventana de WPF?
- 29. ¿Cómo puedo crear una nueva ventana desde dentro de QML?
- 30. WPF RichTextBox sin ancho establecido
en realidad, sólo se necesita este hack si las ventanas están en diferentes montajes, ya que el acceso de campo es interno por defecto, e incluso eso se puede cambiar con el atributo x: FieldModifier. MSDN: Bajo la configuración de compilación estándar para un proyecto de aplicación WPF que usa XAML, clases parciales y código subyacente, el x: Name especificado se convierte en el nombre de un campo creado en el código subyacente cuando se procesa XAML , y ese campo contiene una referencia al objeto. De forma predeterminada, el campo creado es interno. Puede cambiar el acceso al campo especificando el atributo x: FieldModifier. –
He intentado cambiar el atributo richtextbox x: FieldModifier por public pero todavía no está visible desde la segunda ventana. ¿Qué podría estar haciendo mal? Estoy usando Visual Studio 2010 beta 2 ¿Esto marcaría la diferencia? – Justin
Según la información de MSDN para x: Name, también debería funcionar para .NET 4.0. ¿Estás seguro de que estás utilizando la instancia de window1 y no el nombre de la clase para acceder al control? Para obtener la instancia de ventana, mira la respuesta de Ian. ¿Puedes publicar el código que tienes para acceder al richtextbox? –