【发布时间】:2019-12-05 12:38:18
【问题描述】:
我正在使用 MVVM(特别是 Caliburn.Micro)从 WinForms 转移到 WPF,但在掌握整个概念以了解我将使用它的目的时遇到了一点问题。
所以主窗口(“ShellView”)将被分割为 3 部分,侧边栏、标题栏/上下文菜单和页面控制器,看起来像这样 Application frame
所以侧边栏和标题对于显示的所有内容都是静态的,但主页会根据正在使用的系统而变化,例如,如果用户单击时间,它将打开 NS.View.Time.HomeView ,然后用户可以在时间系统中导航。
但是,我似乎无法让 Shellview 侧边栏/标题按钮触发附加到它们的方法。我尝试将按钮 x:Names 设置为方法名称,如下所示
<!-- shell View.xaml -->
<Button x:Name = "OpenDashboard"
Height="30" HorizontalContentAlignment="Left"
Background="Transparent" BorderThickness="0"
Width="{Binding ActualWidth, ElementName=ButtonsStackPanel}"
Cursor="Hand">
</Button>
<!-- Shell View Model.cs -->
public void OpenDashboard()
{
Console.WriteLine("Test");
}
我已经用NotifyOfPropertyChange() 测试了按钮并设置了事物的名称,这很有效,但我就是无法让按钮打开不同的视图。
【问题讨论】:
-
你是说点击按钮时
OpenDashboard()没有被执行? -
是的,当按钮被点击时没有任何反应。
-
你在方法中放了断点吗?
-
考虑到当前的实现,你希望它做什么......?
-
没有附加控制台。如果您将代码更改为
System.Diagnostics.Debug.WriteLine("..."),您应该会看到消息打印到 Visual Studio 的输出窗口中。
标签: c# wpf mvvm caliburn.micro