在dxmessagebox中显示网格控制



我有一个WPF应用程序,其中单击按钮"提交" dxmessage框出现,其中包含摘要文本,概述了用户进行的各种操作。要显示的文本太大,默认文本框宽度和DXMESSAGEBOX的高度不足以以可读格式显示为用户的文本。为了克服这一点,我在app.xaml文件中为dxmessagebox编写了自己的控制模板:

<Application.Resources>
    <ResourceDictionary>
        <ControlTemplate TargetType="{x:Type dx:DXMessageBox}" x:Key="DXMessageBoxTemplate">
            <TextBox Height=500 Width=500 Text="{Binding Path=Text, RelativeSource={RelativeSource TemplatedParent}}"/>
        </ControlTemplate>
        <Style TargetType="{x:Type dx:DXMessageBox}">
            <Setter Property="Template" Value="{StaticResource DXMessageBoxTemplate}"/>
         </Style>
    </ResourceDictionary>
</Application.Resources>

现在这正常工作,文本会自动绑定到我的视图模型类中的变量,如下所示:

string result;
DXMessageBox.Show(result);

变量"结果"是我从myview模型类中的数据派生而派生的数据,然后转换为字符串。

但是,我的应用程序需要在dxmessagebox中显示整个网格控制,所以我尝试了上述方法,但我被卡在两个地方:
1)在app.xaml文件中定义的控制图中,我将添加我的gridControl,XAML的项目源应该是什么,使我的gridControl绑定到我的ViewModel类中声明的数据词。

2)当我添加网格控件后调用dxmessagebox.show方法时,要传递到该方法的论点。

最好使用dxdialog代替dxmessagebox来完成您的任务,因为dxmessagebox不打算用于显示诸如dxgrid之类的自定义内容。

使用DXDialog时,只需创建一个包含DXGRID的单独的UserControl并实现所有相关的演示逻辑,然后将此UserControl传递到DXDialog.Content属性中:

void ShowDialog_Click_1(object sender, RoutedEventArgs e) {
    DXDialog dlg = new DXDialog("Information", DialogButtons.Ok, true);
    dlg.Content = new UserControlWithDXGrid();
    dlg.SizeToContent = System.Windows.SizeToContent.WidthAndHeight;
    dlg.Owner = this;
    dlg.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
    dlg.ShowDialog();
}

P.S。我看到您用MVVM标签标记了这个问题。因此,我相信在这种情况下,您应该使用DialogService在MVVM道路上完成此任务。请从阅读文档开始,清楚地描述了这方面的所有必需步骤。

最新更新