C# 从父用户控件获取自定义对话框(用户控件)的文本
我有一个UserControl作为父控件,我正在打开一个自定义对话框(user control),如下代码所示:C# 从父用户控件获取自定义对话框(用户控件)的文本,c#,wpf,dialog,C#,Wpf,Dialog,我有一个UserControl作为父控件,我正在打开一个自定义对话框(user control),如下代码所示: Window dialog = new Window { Title = "A Dialog Box", Content = new UserControlDialog(), SizeToContent = SizeToContent.WidthAndHeight,
Window dialog = new Window
{
Title = "A Dialog Box",
Content = new UserControlDialog(),
SizeToContent = SizeToContent.WidthAndHeight,
ResizeMode = ResizeMode.NoResize
};
dialog.ShowDialog();
如何从UserControl对话框内的文本框中获取文本?首先,在
UserControlDialog
控件中创建一个公共属性,例如命名为Value
。当用户在对话框中执行某项操作时,将文本框中的值设置为值
属性:
Value = SomeTextBox.Text;
当对话框窗口关闭时,只需从对话框
控件中读取值:
...
dialog.ShowDialog();
string result = dialog.Value;
<TextBox Text="{Binding Value, RelativeSource={RelativeSource
FindAncestor={x:Type YourLocalPrefix:UserControlDialog}}}" ... />
更好的解决方案是将值
属性数据绑定到内部文本框
控件,但要做到这一点,您需要实现或创建值
属性作为:
在UserControlDialog
控件内:
...
dialog.ShowDialog();
string result = dialog.Value;
<TextBox Text="{Binding Value, RelativeSource={RelativeSource
FindAncestor={x:Type YourLocalPrefix:UserControlDialog}}}" ... />
如何从UserControl对话框内的文本框中获取文本?。。。什么文本框中的什么文本
?我希望避免使用公共属性。我会尝试使用INotifyPropertyChanged。thanksIt需要公开,否则您无法从对话框窗口外访问它。好吧,我实现了INotifyChanged,一切正常,我只是觉得我调用对话框的方式有点愚蠢UserControlDialog ud=dialog.Content作为UserControlDialog;如果(ud==null)返回;UserControlDialogViewModel vm=db.DataContext作为UserControlDialogViewModel;if(vm==null)返回;字符串teststr=vm.DialogText.Value.ToString()`我为意大利面代码感到抱歉。使用此
不适用于大文本。