Caliburn Micro Multi-page 具有主视图的应用程序
Caliburn Micro Multi-page Application with Main View
我正在从 WinForms 转移到使用 MVVM 的 WPF(特别是 Caliburn.Micro),但我在掌握我将使用它的目的的整个概念时遇到了一个小问题。
所以 Main window("ShellView") 将被分成 3 个部分,侧边栏,header bar/context 菜单和页面控制器,看起来像这个
Application frame
因此边栏和 header 对于显示的所有内容都是静态的,但主页会根据所使用的系统而变化,例如,如果用户单击时间,它将打开 NS.View.Time.HomeView,然后用户可以浏览时间系统。
但是,我似乎无法获得 Shellview sidebar/header 按钮来触发附加到它们的方法。我试过将按钮 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()
测试了按钮并设置了事物的名称,这很有效,但我就是无法让按钮打开不同的视图。
WPF 应用程序中没有可写入的控制台,但如果您将代码更改为 System.Diagnostics.Debug.WriteLine("Test")
,您应该会看到 "Test" 被打印到 [=16] 中的 output window =] 当你点击 Button
.
我正在从 WinForms 转移到使用 MVVM 的 WPF(特别是 Caliburn.Micro),但我在掌握我将使用它的目的的整个概念时遇到了一个小问题。
所以 Main window("ShellView") 将被分成 3 个部分,侧边栏,header bar/context 菜单和页面控制器,看起来像这个 Application frame
因此边栏和 header 对于显示的所有内容都是静态的,但主页会根据所使用的系统而变化,例如,如果用户单击时间,它将打开 NS.View.Time.HomeView,然后用户可以浏览时间系统。
但是,我似乎无法获得 Shellview sidebar/header 按钮来触发附加到它们的方法。我试过将按钮 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()
测试了按钮并设置了事物的名称,这很有效,但我就是无法让按钮打开不同的视图。
WPF 应用程序中没有可写入的控制台,但如果您将代码更改为 System.Diagnostics.Debug.WriteLine("Test")
,您应该会看到 "Test" 被打印到 [=16] 中的 output window =] 当你点击 Button
.