单击wpf按钮

时间:2011-03-03 22:41:03

标签: wpf button click

我有一个5页的WPF应用程序。在我的主窗口,我有5个按钮。我想要做的是单击按钮1在主窗口的框架中打开第1页。我不想使用导航窗口。我应该使用某种绑定吗?我想使用xmal,代码越少越好。在此先感谢我,我正处于学习阶段!

2 个答案:

答案 0 :(得分:3)

您可以设置按钮“Click”事件处理程序,使用各自的页面调用Frame.Navigate(Uri)

在XAML中:

<Frame Name="myFrame"/>
<Button Name="buttonPage1" Click="OnClickPage1"> 
     Page1
</Button>

然后在后面的代码中:

void OnClickPage1(object sender, RoutedEventArgs e)
{
    myFrame.Navigate(new Uri("page1"));
}

答案 1 :(得分:1)

我认为你评论的逻辑后续是按下按钮2将打开第2页等。

我的建议,这适用于所有WPF开发,是采用MVVM。它将为您提供更多的灵活性和可测试性。

在MVVM中实现您的问题:

为每个视图创建ViewModel,为主窗口创建一个

每个ViewModel都成为其各自View的DataContext。

在MainWindowViewModel中实现5个ICommand属性,并将按钮上的Command属性绑定到MainWindowViewModel上的每个相应ICommand属性。

在主窗口上,我不确定您是否正在实现Frame控件,但我建议使用ContentControl,将控件上的Content属性绑定到MainWindowViewModel上Object类型的某些属性。

在执行每个ICommand对象时,您可以将MainWindowViewModel上的content属性设置为该按钮的匹配ViewModel。

在MainWindowView.xaml中,您需要实现一系列将ViewModel映射到View的DataTemplate:

<DataTemplate DataType="{x:Type Page1ViewModel}">
    <AdornerDecorator>
        <views:Page1View DataContext="{Binding}"/>
    </AdornerDecorator>
</DataTemplate>

我建议您使用众多可用的MVVM框架之一。

MVVMFoundation - 重量轻,最低限度的实施

MVVMLight - 更重的框架

Caliburn - 似乎有很多其他功能

实现一个完整的框架似乎需要做很多额外的工作,但从长远来看,它是值得的,更可测试,更易于维护。