Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
82 / 60 / 17
Регистрация: 21.08.2015
Сообщений: 1,075
1

Получить данные из TextBox, который в UserControl

25.04.2018, 15:21. Показов 4932. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Вот есть у меня главное окно в которое добавлен UserControl, в UserControl есть текстовое поле, я хочу получать данные из этого поля при нажатии на кнопку, подскажите как это сделать.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<Window x:Class="WpfTestUserControl.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTestUserControl"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <StackPanel>
            <local:UserControl1></local:UserControl1>
 
            <Button Click="Button_Click">asdas</Button>
        </StackPanel>
       
    </Grid>
 
</Window>
XML
1
2
3
4
5
6
7
8
9
10
11
12
<UserControl x:Class="WpfTestUserControl.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WpfTestUserControl"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <TextBox>Hello</TextBox>
    </Grid>
</UserControl>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace WpfTestUserControl
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
 
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2018, 15:21
Ответы с готовыми решениями:

Получить данные из TextBox
Добрый день, подскажите пожалуйста, пытаюсь получить данные которые сбайндил &lt;TextBox...

Как получить значение @Html.TextBox, который сделан в partial View?
Добрый день Как получить значения календаря. Этот календарь сделан в partial View Хочу получить...

Не могу получить данные из textbox
Здравствуйте!Начал изучать ASP, и как всегда появились вопросы.Вот пробую решить задачку: есть...

Как получить данные из Textbox на форме
Не могу решить проблему На форме программно создается Textbox, как из него получить данные ...

6
60 / 45 / 15
Регистрация: 06.03.2018
Сообщений: 202
25.04.2018, 15:56 2
Лучший ответ Сообщение было отмечено Чипс как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace WpfTestUserControl
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(UserCtrl.tb.Text);
        }
    }
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<UserControl x:Class="WpfTestUserControl.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WpfTestUserControl"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <TextBox x:Name="tb">Hello</TextBox>
    </Grid>
</UserControl>
 
<Window x:Class="WpfTestUserControl.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTestUserControl"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <StackPanel>
            <local:UserControl1 x:Name="UserCtrl"></local:UserControl1>
 
            <Button Click="Button_Click">asdas</Button>
        </StackPanel>
    </Grid>
</Window>
1
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
25.04.2018, 17:28 3
Чипс, лучше всего сделать свойство зависимости внутри контрола, которое будет делегировать к свойству Text Вашего TextBox. А потом уже обращаться к этому свойству зависимости. Это правильный подход
0
82 / 60 / 17
Регистрация: 21.08.2015
Сообщений: 1,075
26.04.2018, 14:35  [ТС] 4
Цитата Сообщение от Bretbas Посмотреть сообщение
Это правильный подход
Я понимаю, что просить такое немного нагловато, но не могли бы вы привести пример на моём коде?
0
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
26.04.2018, 18:51 5
Лучший ответ Сообщение было отмечено Casper-SC как решение

Решение

Чипс, Ну смотри. Нужно сделать контрол, у которого будет торчать наружу свойство, которое делегирует к свойству Text твоего внутреннего Textbox. Значит делаем следующее:
Code-behind нашего UserControl:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public partial class UserControl1 : UserControl
{
    public static readonly DependencyProperty MyTextProperty = DependencyProperty.Register(
    "MyText",
    typeof(string),
    typeof(UserControl1));
 
    public string MyText
    {
        get { return (string)GetValue(MyTextProperty); }
        set { SetValue(MyTextProperty, value); }
    } 
 
    public UserControl1()
    {
        InitializeComponent();
    }
}
В XAML разметке нашего UserControl1 просто делегируем свойство TextBox.Text к нашему объявленному свойству зависимости MyText:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<UserControl x:Class="WpfTestUserControl.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WpfTestUserControl"
             mc:Ignorable="d" 
             x:Name="MyUserControl"
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <TextBox Text="{Binding MyText, ElementName=MyUserControl}"/>
    </Grid>
</UserControl>
Все, остальное дело Ваше как работать с этим свойством MyText, при использовании этого UserControl1:
XML
1
2
3
4
5
6
7
8
9
10
11
12
<Window x:Class="WpfTestUserControl.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTestUserControl"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
            <local:UserControl1 MyText="{Binding Привязываем_что_хотим}"/>
    </Grid>
</Window>
В частности, можно создать кнопку, привязать к ней команду, при срабатывании которой, будет изменяться свойство во ViewModel, которое подвязано на свойство MyText нашего UserControl1. Но это я оставлю на Вас. Если все равно не понятно, как это сделать - пишите. Но я думаю разберетесь
2
82 / 60 / 17
Регистрация: 21.08.2015
Сообщений: 1,075
27.04.2018, 13:29  [ТС] 6
Большое спасибо за пример, вроде как всё ясно.

P.S.
Как всё усложняется на ровном месте =(
0
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
27.04.2018, 17:31 7
Чипс,
Цитата Сообщение от Чипс Посмотреть сообщение
Как всё усложняется на ровном месте =(
так всегда
0
27.04.2018, 17:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2018, 17:31
Помогаю со студенческими работами здесь

Получить данные из textbox на другой форме
Такой вопрос, у меня есть 2 формы, одно вызывает другую, так которая вызывается, на ней textbox, в...

Получить данные из TextBox используя MVVM
Привет! Пытаюсь реализовать паттерн MVVM. Суть проблемы: мне нужно по нажатию кнопки забрать данные...

получить данные из БД SQL server по значению textbox
Добрый день. Сделал програмулину которая записывает инфу с текстбоксов в бд, все нормально...

Как получить данные с динамически созданных textbox?
Пишу программу в которой пользователь указывает количество параметров зависимо от которых создается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru