我的项目中有Window
和三个UserControl
,我有一个显示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>
如何控制pageTransitionControl
UserControl
导航pageTransitionControl
到其他userControl
修改
MainWindow背后的代码:
ucMain objUC = new ucMain(); //Declare Instance Of user Control
pageTransitionControl.ShowPage(objUC); // Show Instance of usercontrol in PageTransitionControl
我想通过点击ShowPage
中的按钮,在mainWindow中运行pageTransitionControl
的方法UserControl
。
答案 0 :(得分: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(...);
答案 1 :(得分:0)
您真正需要的是使用MVVM模式。请改用ContentControl。并将usercontrol引用传递给其Content属性。你可以从中得到想法,比如:
yourContentControl.Content = new UserControl1();