Usuário com melhor resposta
usercontrol

Pergunta
-
Eu gostaria de saber como que eu crio um usercontrol WPF que tenha uma propriedade do tipo TextBox.
A ideia seria +- essa:
na janela:
<TextBox Name="meu_textBox"/>
<meucontrole:controle propriedade="meu_textBox">
e dai no user control teria:
TextBox tb;
// Atribui "meu_textBox" a tb
tb.Focus();
Resumindo então: eu quero fazer um userControl que coloque o" focus()" em um texbox externo ao usercontrol. Para isso teria que passar o textbox através de uma propriedade desse usercontrol.
Agradeço desde já!!!!
Respostas
-
Segue um exemplo:
Window1.xaml
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:c="clr-namespace:WpfApplication1" Title="Window1"> <StackPanel> <TextBox Name="TextBox1" Height="30"/> <c:UserControl1 Propriedade="TextBox1" Height="20"/> </StackPanel> </Window>
UserControl1.xaml
<UserControl x:Class="WpfApplication1.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="300" Width="300"> <Grid> <Button Click="Button_Click"/> </Grid> </UserControl>
UserControl1.xaml.cs
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace WpfApplication1 { /// <summary> /// Interaction logic for UserControl1.xaml /// </summary> public partial class UserControl1 : UserControl { public String Propriedade { get; set; } public UserControl1() { InitializeComponent(); } private FrameworkElement GetOwner() { FrameworkElement element = this.Parent as FrameworkElement; while (element.Parent != null) { element = element.Parent as FrameworkElement; } return element as FrameworkElement; } private void Button_Click(object sender, RoutedEventArgs e) { var owner = this.GetOwner(); var control = owner.FindName(this.Propriedade); if (control is TextBox) (control as TextBox).Background = Brushes.Red; } } } - Marcado como Resposta Adriel CodecoModerator sábado, 30 de outubro de 2010 19:43
Todas as Respostas
-
Segue um exemplo:
Window1.xaml
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:c="clr-namespace:WpfApplication1" Title="Window1"> <StackPanel> <TextBox Name="TextBox1" Height="30"/> <c:UserControl1 Propriedade="TextBox1" Height="20"/> </StackPanel> </Window>
UserControl1.xaml
<UserControl x:Class="WpfApplication1.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="300" Width="300"> <Grid> <Button Click="Button_Click"/> </Grid> </UserControl>
UserControl1.xaml.cs
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace WpfApplication1 { /// <summary> /// Interaction logic for UserControl1.xaml /// </summary> public partial class UserControl1 : UserControl { public String Propriedade { get; set; } public UserControl1() { InitializeComponent(); } private FrameworkElement GetOwner() { FrameworkElement element = this.Parent as FrameworkElement; while (element.Parent != null) { element = element.Parent as FrameworkElement; } return element as FrameworkElement; } private void Button_Click(object sender, RoutedEventArgs e) { var owner = this.GetOwner(); var control = owner.FindName(this.Propriedade); if (control is TextBox) (control as TextBox).Background = Brushes.Red; } } } - Marcado como Resposta Adriel CodecoModerator sábado, 30 de outubro de 2010 19:43
-