2013-05-31 14 views
11

Yapmak istediğim, bir düğmeye tıklama ile bir wpf penceresinin içeriğini değiştirmek/kaydırmaktır. Ben wpf için yeniyim ve bunun nasıl yapılacağına dair hiçbir fikrim yok. Lütfen bana yardım edebilecek biri varsa, minnettar olacağım. Herhangi bir video öğreticisi en iyi olabilirdiWpf penceresinde dinamik olarak içerik değiştirme

cevap

31

Pencerenin içeriğini bir UserControl'e koyabilirsiniz. Pencerenizde sadece içerik kontrolü ve içeriği değiştirmek için bir düğme vardır. Düğmeye tıkladıktan sonra içerik kontrolünün içerik özelliğini yeniden atayabilirsiniz.

Bunun için küçük bir örnek oluşturdum.

sizin MainWindow için XAML-Kod şöyle olabilir: Ben çözümü için iki UserControls ekledik

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

. Ben MyUserControl denilen küçük usercontrol oluşturduk

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

Güncelleme : gibi MainWindow için CodeBehind arar. Eğer içerik kontrolüne bu usercontrol yeni bir örneğini atayabilirsiniz yukarıda xaml-biçimlendirme düğmesi-click-halinde

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

benziyor. Bunu şu şekilde yapabilirsiniz:

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

Aptal olduğum için üzgünüm ama tamamen naifim, eğer bana kullanıcı kontrolünü de gösterirseniz çok yardımcı olacaktır. Bunu paylaştığın için teşekkürler! –

+1

Gönderiyi güncelledim. Umarım güncelleme size yardımcı olur. – Tomtom

+2

ama kullanıcı kontrolü de önceden inşa edilmiştir. Çalışma zamanında nasıl bir kullanıcı denetimi oluşturursunuz? –

İlgili konular