2013-05-31 2 views
11

내가하고 싶은 일은 버튼 클릭만으로 wpf 창의 내용을 변경/슬라이딩하는 것입니다. 나는 wpf에 익숙하지 않으며 이것을하는 방법의 아무 단서도 없다. 누구든지 나를 도울 수 있으면 제게 너무 감사 할 것입니다. 모든 비디오 자습서가 가장 좋을 것입니다.wpf 창에서 내용을 동적으로 변경하기

답변

31

사용자 콘트롤에 창의 내용을 넣을 수 있습니다. 그러면 창에 내용 컨트롤과 내용을 변경하는 단추 만 있습니다. 버튼을 클릭하면 콘텐츠 컨트롤의 content-property를 재 할당 할 수 있습니다.

저는 이것을 위해 작은 예제를 만들었습니다.

당신의 MainWindow를위한 XAML 코드는 다음과 같이 할 수 있습니다 : 나는 솔루션이 개 된 UserControls을 추가 한

<Window x:Class="WpfApplication3.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <Button Content="Switch" Click="ButtonClick"/> 
     <ContentControl x:Name="contentControl" Grid.Row="1"/> 
    </Grid> 
</Window> 

. 나는을 MyUserControl라는 작은 UserControl을 만들었습니다

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     this.contentControl.Content = new UserControl1(); 
    } 

    private void ButtonClick(object sender, RoutedEventArgs e) 
    { 
     this.contentControl.Content = new UserControl2(); 
    } 
} 

업데이트 : 같은 MainWindow를위한 코드 숨김 보인다. 당신은 콘텐츠 컨트롤이 UserControl을의 새로운 인스턴스를 할당 할 수 있습니다 위의 XAML 마크 업 버튼 클릭 이벤트에서

<UserControl x:Class="WpfApplication.MyUserControl" 
      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" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <StackPanel Orientation="Vertical"> 
     <Label Content="This is a label on my UserControl"/> 
     <StackPanel Orientation="Horizontal" HorizontalAlignment="Left"> 
      <Button Content="Testbutton 1" Margin="5"/> 
      <Button Content="Testbutton 2" Margin="5"/> 
     </StackPanel> 
     <CheckBox Content="Check Me"/> 
    </StackPanel> 
</UserControl> 

것 같습니다. 당신에 의해 할 수있는이 : 죄송합니다

this.contentControl.Content = new MyUserControl(); 
+1

바보가 될 수 있지만, 당신이 나에게 사용자 정의 컨트롤을 보여줄 것뿐만 아니라 그것이 많은 도움이 될 것입니다 경우에 나는 완전히 순진입니다. 어쨌든 이것을 공유해 주셔서 감사합니다! –

+1

내 게시물을 업데이트했습니다. 업데이트로 도움이되기를 바랍니다. – Tomtom

+2

하지만 사용자 정의 컨트롤도 미리 빌드됩니다. 런타임에 사용자 정의 컨트롤을 만드는 방법은 무엇입니까? –

관련 문제