如何在同一UserControl上基于ContentControl的datacontext设置元素的DataContext

时间:2014-01-10 13:16:10

标签: wpf xaml prism-4

以下是My Shell中的部分:

        <StackPanel x:Name="stack" Orientation="Horizontal" Height="25" HorizontalAlignment="Right" Margin="0,4,0,0" Grid.Row="0">
            <Button DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type StackPanel}}, Path=DataContext}" Content="Back" prism:Click.Command="{Binding Path=GoBackCommand}"/>
            <Button DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type StackPanel}}, Path=DataContext}" Content="Forward" prism:Click.Command="{Binding Path=GoForwardCommand}"  Margin="10,0,0,0"/>
        </StackPanel>


        <ContentControl x:Name="ActionContent" prism:RegionManager.RegionName="{x:Static inf:RegionNames.WorkspaceRegion}" Grid.Row="1">
            <ContentControl.Template>
            <ControlTemplate TargetType="ContentControl" >                        
                        <Grid >
                        <Controls:RoundedBox/>                 
                        <ContentPresenter Margin="10,0,10,0" Content="{TemplateBinding Content}" />                          
                        </Grid>                       

                    <ControlTemplate.Triggers>
                    <Trigger Property="HasContent" Value="false">
                        <Setter Property="Visibility" Value="Collapsed" />
                    </Trigger>

                    <DataTrigger Binding="{Binding ElementName=stack}">
                            <Setter Property="DataContext" Value="{Binding RelativeSource={RelativeSource Self}, 
                            Path=Content.DataContext}" />
                        </DataTrigger>

                    </ControlTemplate.Triggers>

            </ControlTemplate>
        </ContentControl.Template>

在ContentControl视图中,从模块注入(使用功能区选项卡)。我想在StackPanel里面有两个按钮可以使用ViewModels(DataContext)注入视图,用于向后和向前导航。

请帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

我首先要好好阅读Prism Navigation Chapter

以及如何使用navigation journal

编辑: 我不认为你可以直接在XAML中做你想做的事,但我可以看到2个解决方法:

  • 在shell视图模型中将命令定义为全局CompositeCommand,然后在导航时将视图注册并取消注册自己的实现。
  • 定义一个新区域,视图可以注入自己的导航按钮。

希望这可以帮到你。

相关问题