C# 从父用户控件获取自定义对话框(用户控件)的文本

C# 从父用户控件获取自定义对话框(用户控件)的文本,c#,wpf,dialog,C#,Wpf,Dialog,我有一个UserControl作为父控件,我正在打开一个自定义对话框(user control),如下代码所示: Window dialog = new Window { Title = "A Dialog Box", Content = new UserControlDialog(), SizeToContent = SizeToContent.WidthAndHeight,

我有一个UserControl作为父控件,我正在打开一个自定义对话框(user control),如下代码所示:

        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()`我为意大利面代码感到抱歉。使用
不适用于大文本。