5

我的项目中有Window三个UserControl,我有一个控件,它本身显示用户控件

<Window x:Class="Hesabdar.winMain"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:pageTransitions="clr-namespace:WpfPageTransitions;assembly=WpfPageTransitions"
        Title="winMain" Height="500" Width="600" Loaded="Window_Loaded_1">
    <Grid>
        <pageTransitions:PageTransition Name="pageTransitionControl"  TransitionType="SlideAndFade" />
    </Grid>
</Window>

UserControl我有Button

<UserControl x:Class="Hesabdar.ucMain"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" Height="500" Width="600">
    <Grid>
          <Button Content="Manege" HorizontalAlignment="Left" Margin="391,163,0,0" Click="Button_Click_1"/>
    </Grid>
</UserControl>

如何控制pageTransitionControlUserControl导航pageTransitionControl到其他userControl

编辑:

MainWindow 后面的代码:

ucMain objUC = new ucMain(); //Declare Instance Of user Control 
pageTransitionControl.ShowPage(objUC); // Show Instance of usercontrol in PageTransitionControl

只是我想通过单击 in 中的按钮来运行in mainWindow 的方法ShowPagepageTransitionControlUserControl

4

2 回答 2

2

您可以从后面的 UserControls 代码中找到这样的 PageTransition 控件:

public static PageTransition FindPageControl(DependencyObject child)
{
    DependencyObject parent= VisualTreeHelper.GetParent(child);

    if (parent == null) return null;

    PageTransition page = parent as PageTransition;
    if (page != null)
    {
        return page;
    }
    else
    {
        return FindPageControl(parent);
    }
}

然后你可以像这样使用它:

this.FindPageControl(this).ShowPage(...);
于 2013-07-08T06:52:38.327 回答
0

您真正需要的是使用 MVVM 模式。请改用 ContentControl。并将 usercontrol 引用传递给它的 Content 属性。你可以从中得到想法,比如:

yourContentControl.Content = new UserControl1();
于 2013-07-08T06:32:29.003 回答