我有一个wpf应用程序,点击按钮"提交"将出现一个DXMessage Box,其中包含概述用户所做各种操作的摘要文本。要显示的文本太大,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);
变量&#34;结果&#34;是我从myview模型类中的数据表派生并转换为字符串的数据。
但是我的应用程序需要将整个gridcontrol显示在DXMessageBox中,所以我尝试了上述相同的方法,但是我被困在两个地方:
1)在app.xaml文件中定义的controlTemplate中,我将添加我的gridcontrol,xaml的itemsSource应该是什么,以便我的gridcontrol绑定到我的viewmodel类中声明的数据表。
2)当我在添加网格控件后调用DXMessageBox.Show方法时,传递给该方法的参数是什么。
答案 0 :(得分:0)
最好使用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方式完成此任务。
请从阅读documentation开始,清楚地描述这方面所需的所有步骤。