如何将数据从一个用户控件发送到另一个用户控件

本文关键字:控件 用户 一个 另一个 数据 | 更新日期: 2023-09-27 18:07:13

假设我有这两个用户控件。当单击ControlOne中的按钮时,我将如何通过从ControlOneControlTwo中的文本框中输入的数据?

<UserControl x:Class="Project.ControlOne"
             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"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <StackPanel Orientation="Horizontal">
            <TextBox x:Name="MyTextBox" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" />
            <Button HorizontalAlignment="Center" VerticalAlignment="Center" Content="Send" Click="Button_Click" />
        </StackPanel>
    </Grid>
</UserControl>
...
namespace Project
{
    public partial class ControlOne : UserControl
    {
        public ControlOne()
        {
            InitializeComponent();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
        }
    }
}
<UserControl x:Class="Project.ControlTwo"
             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"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <StackPanel Orientation="Horizontal">
            <TextBox x:Name="MyTextBox" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" />
        </StackPanel>
    </Grid>
</UserControl>

如何将数据从一个用户控件发送到另一个用户控件

您的两个用户控件应该不知道彼此(除非其中一个包含另一个)。这就是为什么你不能在它们之间"传递数据"。用户控件背后的思想是,您可以根据需要在任何地方多次放置它。如果ControlOne知道ControlTwo,分别使用它们会发生什么?或者在同一个地方有三个ControlTwo ?

包含这两个图层的层应该从其中一个读取值并将其设置为另一个。如果你想让它在按钮被按下时发生,你应该查看事件处理,这样父类就可以知道控件的按钮何时被按下。