C# 如何访问一个UserControl';在加载到用户控件顶部的窗口中隐藏数据的代码?

C# 如何访问一个UserControl';在加载到用户控件顶部的窗口中隐藏数据的代码?,c#,wpf,xaml,user-controls,code-behind,C#,Wpf,Xaml,User Controls,Code Behind,我有一个WPF应用程序,其中有一个UserControl,我的大部分应用程序都位于这个位置。在这个UserControl中,我有几个保存用户信息的不同控件。保存数据时,我会创建一个窗口,在UserControl上“弹出”以确认保存 在这个窗口中,我需要将UserControl中的一些数据显示回用户并保存到数据库中 我在窗口中创建了UserControl的对象,以便访问控件: UserControl Ctrl = new UserControl(); 但是这个用户控件不再保存我需要的值。

我有一个WPF应用程序,其中有一个UserControl,我的大部分应用程序都位于这个位置。在这个UserControl中,我有几个保存用户信息的不同控件。保存数据时,我会创建一个窗口,在UserControl上“弹出”以确认保存

在这个窗口中,我需要将UserControl中的一些数据显示回用户并保存到数据库中

我在窗口中创建了UserControl的对象,以便访问控件:

    UserControl Ctrl = new UserControl();
但是这个用户控件不再保存我需要的值。此外,UserControl的构造函数接受可选参数。我发现在XAML中创建引用以访问控件会产生错误“类型”UserControlName“不包括任何可访问的构造函数”

我正在对应用程序采用代码隐藏方法,并且希望在大部分情况下继续这样做。但是使用数据绑定不是问题

我的问题是:窗口如何访问UserControl的控件或代码隐藏中保存的不同值,以便在窗口中保存来自UserControl的必要数据

UserControl的XAML的必要部分是这样的:

<TextBox x:Name="txtUserName" Grid.Row="0" Grid.Column="1" Margin="0,0,0,20"/>
<TextBox x:Name="txtName" Grid.Row="1" Grid.Column="1" Margin="0,11,0,31" Height="30" VerticalAlignment="Center" TextChanged="txtName_Change"/>
<ComboBox x:Name="cboPasswordExpire" Grid.Row="2" Grid.Column="3" Margin="0,0,0,20" Height="30"/>
<TextBox x:Name="txtUserID" Grid.Row="2" Grid.Column="1" Margin="0,0,0,20" Height="30" TextChanged="txtUserID_Change"/>

听起来您需要的是一个通用窗口,它将从任何来源获取任何数据并显示

最好的办法是创建一个接口,其他每个类都实现这个接口来处理格式化和保存,让窗口接受该接口类型的对象并调用这些方法来显示输出和保存数据


或者,另一方面,每个控件都必须实现一个接口,用于处理自己的窗口显示和数据保存。

为什么不能通过构造函数传递它,或者在构建新窗口后但在聚焦之前使用属性更新它?窗口需要保存任意数量的字段。在以后的开发中,其他用户控件也将使用此窗口。因此,传递参数可能不是最好的方法。@HenkHolterman不,UserControl没有x:Name。因此,您需要的是一个通用窗口,它将从任何来源获取任何数据并显示,然后保存?您可能最关注的是创建一个接口,该接口由其他每个类实现,用于处理格式化和保存,让窗口接受该接口类型的对象并调用这些方法,然后显示输出……或者,在另一方面,每个控件必须实现的一个接口,用于处理自己的窗口显示和数据保存。。。
 rowSecurityTrans["Name"] = Ctrl.txtName.Text;
 rowSecurityTrans["UserID"] = Ctrl.txtUserID.Text;
 strUserName = userEditor.txtUserName.Text;
 rowSecurityTrans["PasswordDuration"] = General.PasswordConverter(Ctrl.cboPasswordExpire.SelectedIndex);