2013-07-08 4 views
5

내 프로젝트에 WindowUserControl을 가지고, 나는 그 자체액세스

<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을을 표시하고 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로 이동하려면 pageTransitionControluserControl

01 23,516,

편집 : MainWindow를의 뒤에

코드 :

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

그냥 내가 UserControl에있는 버튼을 클릭에서 MainWindow를에 방법을 pageTransitionControlShowPage를 실행하려면.

+0

이 스레드에서 내 질문에 준 대답을보십시오 : http://stackoverflow.com/questions/17059120/change-wpf-usercontrol-depending-on-a-property-of-a-treeviewitem –

+0

것 같습니다 내 목표가 너, More Info Added @Romano Zumbé – Moslem7026

답변

2

+0

작동! 당신은 부모를'PageTransition'으로 캐스팅 합니다만,이 컨트롤의 부모가 window.as라는 것을 알고 있습니다. 재귀 코드인지는 모르지만 캐스트가 완료되고 오류가 발생하지 않습니다. – Moslem7026

+1

캐스트가 불가능한 경우 예외를 발생시키지 않는 'as'연산자로 인해 작동합니다. 대신 'null'값을 반환합니다. –

0

정말 필요한 것은 MVVM 패턴을 사용하는 것입니다. 대신 ContentControl을 사용하십시오. usercontrol 참조를 Content 속성에 전달합니다. 당신처럼, 그것에서 아이디어를 얻을 수 있습니다

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(...); 
당신은 뒤에 된 UserControls 코드에서이 같은 PageTransition 제어를 찾을 수
yourContentControl.Content = new UserControl1(); 
+0

코드 편집 및 추가 정보 – Moslem7026