2013-05-31 53 views
11

我想要做的是通過單擊按鈕更改/滑動wpf窗口的內容。我是wpf的新手,對於如何做到這一點毫無頭緒。如果有人能幫助我,我會很感激。任何視頻教程將是最好的在wpf窗口中動態更改內容

回答

31

您可以將窗口的內容放入UserControl。你的窗口只有一個內容控制和一個按鈕來改變內容。點擊按鈕後,您可以重新分配內容控制的內容屬性。

我已經爲此做了一個小例子。

的XAML的代碼爲你的主窗口可以是這樣的:

<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> 

我已經添加了兩個用戶控件的解決方案。代碼隱藏在主窗口的樣子:

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(); 
    } 
} 

更新 我已經創建了一個小的用戶控件叫的MyUserControl。 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

但用戶控制也是預先構建的。你將如何在運行時創建一個用戶控件? –