如何在wpf中将按钮的命令更改为tabcontrols'

时间:2014-12-22 02:47:32

标签: wpf binding tabcontrol mahapps.metro

我有4个按钮绑定命令,我想使用tabcontrols完成这些命令。

<Button Margin="5" Width="Auto" Height="26" Content="operating" Command="{Binding PCmd}" CommandParameter="{Binding ElementName=frame}"/>
<Button Margin="5" Width="Auto" Height="26" Content="settings"  Command="{Binding SettingCmd}" CommandParameter="{Binding ElementName=frame}"/>
<Button Margin="5" Width="Auto" Height="26" Content="showing" Command="{Binding DiCmd}" CommandParameter="{Binding ElementName=frame}"/>
<Button Margin="5" Width="Auto" Height="26" Content="controls" Command="{Binding DeviceCmd}" CommandParameter="{Binding ElementName=frame}"/>

<Frame x:Name="frame" Source="PPage.xaml" NavigationUIVisibility="Hidden" />

设置命令如下:

 SettingCmd = new RelayCommand<System.Windows.Controls.Frame>
        (
            (f) =>
            {
                f.Navigate(new Uri(@"View\SettingPage.xaml", UriKind.Relative));
            }
        );

现在我进行了这些更改,如何添加命令来完成按钮中的命令,根据4个按钮有4个xaml页面

<controls:MetroAnimatedSingleRowTabControl Grid.Row="1" x:Name="MainTabControl">
    <TabItem Header="operating"></TabItem>
    <TabItem Header="settings"></TabItem>
    <TabItem Header="showing"></TabItem>
    <TabItem Header="controls"></TabItem>
</controls:MetroAnimatedSingleRowTabControl>

1 个答案:

答案 0 :(得分:0)

由于不再需要框架,最好的方法是将每个页面的Xaml放入相应的TabItem中,例如:

<TabItem Header="settings">
  //bring the Xaml of SettingPage.Xaml to here
</TabItem>

在这种情况下,它们不需要导航,也不需要命令,但如果你坚持将每个标签内容保存在一个单独的Xaml文件上,你必须首先在每个TabItem中定义一个Frame,并设置它的source属性到相应的Xaml页面:

<controls:MetroAnimatedSingleRowTabControl Grid.Row="1" x:Name="MainTabControl">
            <TabItem Header="operating">
                <Frame  Source="View/OperatingPage.xaml" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" NavigationUIVisibility="Hidden"/>
            </TabItem>
            <TabItem Header="settings">
                <Frame  Source="View/SettingPage.xaml" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" NavigationUIVisibility="Hidden"/>
            </TabItem>
            <TabItem Header="showing">
                <Frame  Source="View/ShowingPage.xaml" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" NavigationUIVisibility="Hidden"/>
            </TabItem>
            <TabItem Header="controls">
                <Frame  Source="View/ControlsPage.xaml" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" NavigationUIVisibility="Hidden"/>
            </TabItem>
</controls:MetroAnimatedSingleRowTabControl>

在这种情况下也不需要任何命令。