У меня есть текстовое поле в пользовательском элементе управления WPF и кнопка в форме WPF. Как я могу получить доступ к этим значение текстового поля на кнопку мыши события этой основной формы, где я использую пользовательский элемент управления WPFДоступ к пользовательскому значению пользователя WPF
ответ
Прежде всего, иметь в виду, что WPF не WinForms - в теории вы должны данные привяжите к вашим свойствам TextBoxes, а затем измените значение свойств, а не напрямую на TextBoxes!
Это, как говорится, все, что вам нужно сделать, это назвать UserControl и TextBoxes, а затем получить доступ к ним, как это:
Int MyUserControl.xaml:
<TextBox x:Name="myTextBox1"/>
<TextBox x:Name="myTextBox2"/>
В MyWindow.xaml:
<local:MyUserControl x:Name="myUserControlInstance"/>
<Button Content="Click me" Click="Button_Click" />
В MyWindo w.xaml.cs:
private void Button_Click(object sender, RoutedEventArgs e) {
myUserControlInstance.myTextBox1.Text = "Foo";
myUserControlInstance.myTextBox2.Text = "Bar";
}
В UserControl, сделать два открытых свойства, которые возвращают строку:
public property Textbox1Text
{
get { return TextBox1.Text; }
}
затем текст из элементов управления TextBox является видимым для главной формы.
Или лучший вариант: иметь событие, которое пользовательское управление может поднять, назовите его чем-то вроде TextChanged
. Конечно, вы хотите лучшее название для него, чем это, так что давайте просто делать вид, что ваше первое текстовое поле предназначено для пользователя ввести имя и вызвать событие NameTextChanged
, то ваше мероприятие будет что-то вроде этого:
public MainWindow()
{
InitializeComponent();
TextBox1.TextChanged += new TextChangedEventHandler(TextBox1_TextChanged);
}
private void TextBox1_TextChanged(object sender, TextChangedEventArgs e)
{
if (NameTextChanged!= null)
this.NameTextChanged(this, e);
}
public event TextChangedEventHandler NameTextChanged;
или еще лучше, вы могли бы пойти на разгромленное событие - но сначала придерживайтесь основ.
Подписывание событию, по-видимому, является лучшим вариантом, предложенным slugster выше. Если вы используете этот подход, вы можете иметь несколько экземпляров одного и того же элемента управления пользователя в том же окне, но обрабатывать их по-разному, основываясь на том, с какого пользовательского элемента управления они происходят.
В качестве примера вы можете использовать пользовательский контроль типа адреса, который может иметь адрес отправителя и адрес получателя, который может иметь одинаковые поля, такие как улица, город, штат и т. Д. Но может вести себя по-другому, когда адрес отправителя или адрес получателя обновляются.
Надеюсь, это поможет.
Nilesh Gule
http://nileshgule.blogspot.com
Для вашей конкретной проблемы, я могу предложить вам конкретное решение. Это нельзя рассматривать как общий.
Ваша проблема заключается в том, чтобы прочитать содержимое текстовых полей в пользовательском элементе управления нажатием кнопки.
Вот решение.
В этом решении будет два файла xaml и их соответствующие файлы .cs.
Logic: - Врожденная логика заключается в повторении визуальных эффектов в пользовательском элементе управления, поиске текстовых полей, чтении текста в нем при нажатии кнопки.
Так вот код ...
Window.xaml - Это наше главное окно. Это содержит 1 кнопку и ссылку на объект для пользовательского элемента управления.
<Grid> <StackPanel Orientation="Vertical"> <Button x:Name="clickThis" Height="30" Width="70" Content="Click Me!!" Click="clickThis_Click" /> <local:TxtBoxedUC x:Name="UC" /> </StackPanel> </Grid>
TxtBoxedUC.xaml - Это наш пользовательский элемент управления. Это содержит два наших текстовых поля.
<Grid> <StackPanel Orientation="Vertical"> <TextBox x:Name="txt1" Width="150" Height="30" /> <TextBox x:Name="txt2" Width="150" Height="30" /> </StackPanel> </Grid>
Window1.xaml.cs - Этот документ содержит кнопку метод щелчка, а также методы перебора визуальных элементов в пользовательском элементе управления.
private void clickThis_Click(object sender, RoutedEventArgs e) { GetVisual(UC); }
выше код для обработки нажатия кнопок.
private void GetVisual(UIElement currentVisual)
{
int count = VisualTreeHelper.GetChildrenCount(currentVisual);
if (count > 0)
{
for (int i = 0; i < count; i++)
{
UIElement uiElement = VisualTreeHelper.GetChild(currentVisual, i) as UIElement;
if (uiElement != null)
{
if (uiElement.GetType() == typeof(TextBox))
{
TextBox txt = uiElement as TextBox;
MessageBox.Show(txt.Text);
}
}
GetVisual(uiElement);
}
}
}
Выше код предназначен для итерации визуальных элементов в пользовательском элементе управления.
Файл .cs пользовательского элемента управления не требуется.
Теперь, когда вы нажимаете на кнопку, вы можете видеть, что вы вошли в MessageBox.
Счастливое кодирование ...
Пожалуйста, отметьте, как ответ, если это решит вашу проблему.
Попробуйте это:
private void Button_Click(object sender, RoutedEventArgs e)
{
string myTextboxValue = this.tbInput.Text;
}
- 1. Доступ к значению словаря по пользовательскому значению объекта в Python?
- 2. Доступ к пользовательскому управлению извне
- 3. Доступ к пользовательскому каналу
- 4. Доступ к пользовательскому элементу ListView
- 5. Доступ к пользовательскому интерфейсу формы?
- 6. Доступ к пользовательскому узлу Drupal
- 7. Как получить доступ к пользовательскому User.objects.create_user пользователя (...) в южном направлении?
- 8. Доступ к значению списка
- 9. Spring Security - доступ к пользовательскому кэшу
- 10. Как предоставить root-доступ к пользовательскому приложению?
- 11. Получить доступ к значению
- 12. Доступ к значению массива
- 13. Доступ к значению сеанса
- 14. Доступ к значению объекта
- 15. Доступ к значению прямоугольника?
- 16. wpf - привязать полилинию к пользовательскому классу
- 17. Привязка пользовательской зависимости к пользовательскому стилю WPF
- 18. WPF DataGrid привязывается к пользовательскому классу
- 19. Свойство зависимостей WPF, привязанное к пользовательскому управлению
- 20. Проблема с привязкой к пользовательскому управлению WPF?
- 21. Проблема с привязкой к пользовательскому управлению WPF
- 22. Доступ к строковому значению XML
- 23. WPF привязка к унаследованному значению
- 24. Доступ к привязанному значению TextProperty TextBlock в WPF
- 25. Доступ к пользовательскому справочному словарю в Swift
- 26. Доступ к пользовательскому виду в android
- 27. Доступ к пользовательскому сценарию bash из SBCL
- 28. Доступ к элементу по пользовательскому атрибуту - JQuery
- 29. Symfony доступ к пользовательскому запросу propel
- 30. Доступ к пользовательскому обходному свойству в fulltextsqlquery