- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 RadWindow(本质上是 ChildWindow)的功能性 MVVM 模式 SL 应用程序,我想在我的 View 中删除使用其 ShowDialog 显示窗口的代码隐藏。如果有帮助的话,主视图和窗口都绑定(bind)到同一个 ViewModel。
该按钮具有使用 MVVMLight RelayCommand 处理设置状态的 ViewModel 命令以及 View 中的事件处理程序。
最终的解决方案/模式将被重用 20 多次,因此比代码隐藏更好的东西会很棒。
想法?
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
var window = new RadWindowTest.Controls.ChildWindow1();
window.Closed += new System.EventHandler<Telerik.Windows.Controls.WindowClosedEventArgs>(window_Closed);
window.ShowDialog();
}
最佳答案
在这种情况下,我建议您实现 DialogService .您可以将此服务注入(inject)到您的 View 模型中,为了进行测试,您必须注入(inject)一个不依赖于 View 的实例,从而保持可测试性。您可以使用 ViewModelLocator 使该服务可用于您的应用程序。
另一种方法是实现一个 ViewBase 类,该类实现一个允许您显示对话框的接口(interface)。 ViewModel 现在使用这个接口(interface)来显示一个对话框。再次测试您需要提供不同的接口(interface)实现。可以找到样本 here .
这两个想法都围绕着相同的概念,即分解显示对话框的功能。为了严格解耦 View 和 ViewModel,您必须考虑 ViewModel 如何指定必须删除哪个对话框,以及如何将对话结果或对话模型返回给调用 ViewModel。
哪种方法更好取决于您的判断。我个人更喜欢第一种方法,因为我不必从公共(public)基类继承 View 。
PS:使用命令到达 ViewModel 中要显示对话框的位置。使用对话服务应该不需要任何代码。
关于silverlight-4.0 - ShowDialog 带有 MVVMLight 的 RadWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6509739/
我有一个正在使用 jquery 的 DocMenu... 其中一个项目是这样的: Test 我正在使用 Telerik Rad Windiws 作为弹出窗口.
我在 WPF 中遇到了 Telerik 主题的一些问题我添加了对 Telerik.Windows.Themes.Windows8 的引用,并使用文件 App.xaml 和以下代码合并了资源:
我的代码: function AddFavoritePopup() { var radWindow = document.getElementById('AddFavoriteRad
我有一个令人费解的情况,我需要一些帮助。我试图让我的按钮打开一个 RadWindow(弹出窗口中的另一个页面),我将不胜感激我能得到的任何帮助。 我的表单上有一个简单的按钮(用户控件表单)。我想要做的
我正在使用Telerik控件,有两个页面的列表和详细信息页面。 详细信息页面将打开Radwindow。关闭radwindow后,ajaxrequest将刷新列表页面(父页面)的网格。
有什么方法我们可以知道 radwindow 是从哪个页面调用/打开的?我有一个 RadWindow,它将由两个页面打开,因此,如果我知道页面的名称,我可以检查该页面并执行不同的代码。 谢谢 最佳答案
我在 aspx 页面中有文本框、组合框和按钮控件。要在组合框中添加新值,我使用的是按钮。单击此按钮 按钮,一个 radwindow 打开,添加/更新一些记录。在关闭 radwindow 时,我需要在父
我的代码:
我有一个 radwindow,它是使用 javascript 函数打开的,如下所示。但是,当弹出 radwindow 时,会显示警报。 function OpenRadWindow() { va
我在使用 telerik RadWindow 时遇到问题。在我的应用程序中,将发生以下步骤: 用户点击一个按钮,RadWindow 将可见(在窗口中央)。然后,用户将选择要上传的文件。 当用户按下上传
当我打开 Radwindow 时,我希望父页面被禁用。如果 radWindow 打开,用户将不能在此页面上执行任何操作。 这是我正在使用的代
我有一个 Telerik RadWindow 实例,它可以被重用以在同一页面上显示不同的内容。一旦 RadWindow 显示一个页面并关闭,该内容将保持在 RadWindow 中加载,直到 RadWi
我想显示 RadWindow2。它在 Chrome、Mozilla 中显示,但在 IE9 和 IE10 中不显示。如何解决这个问题? js function Show() { var oWnd
我正在尝试从代码隐藏运行 telerik rad 窗口。但我有一些问题。我不知道这是否重要,但我正在尝试从 rad 网格的编辑模式下单击的按钮运行 rad 窗口。 RadWindow window1
我有一个应用程序,用户单击父窗口上的按钮即可显示弹出窗口。当用户关闭弹出窗口时,如何确定(在父窗口代码隐藏中)用户已关闭弹出窗口? 这是关闭弹出窗口的代码: function closeWin()
需要通过按钮单击事件在 radWindow 中打开网页。试图从客户端执行此操作,但它出现后立即消失。我认为单击按钮会导致回发到服务器...因此,我目前正在尝试使用下面发布的服务器端代码 (C#) 解决
我在网页中调用 RadWindow 作为对话框。我从代码隐藏调用,因为我需要传递一些参数: radWindow1.NavigateUrl = url + "?England,Germany,Franc
我在页面上显示的主 site.master 表单上有一个 radMenu。该页面有一个带有按钮的 radGrid,用于打开显示报告的 radWindows。当 radWindow 打开时,一切正常,但
我试图在关闭 telerik RadWindow 后立即调用服务器端方法。我有一个弹出式 RadWindow,我想在该弹出式窗口关闭后在客户端和服务器端执行一些操作。我一直在寻找像 OnClientC
我正在使用 radgrid 来填写表格。单击打开 后将打开radwindow。 打开 和关闭的 Javascript 代码` (func
我是一名优秀的程序员,十分优秀!