2013-05-31 35 views
11

Điều tôi muốn làm là thay đổi/trượt nội dung của cửa sổ wpf bằng cách nhấp vào nút. Tôi mới đến wpf và không có đầu mối làm thế nào để làm điều này. Xin vui lòng nếu có ai có thể giúp tôi, tôi sẽ rất biết ơn. Mọi video hướng dẫn đều tốt nhất làThay đổi nội dung động trong cửa sổ wpf

Trả lời

31

Bạn có thể đặt nội dung của cửa sổ vào UserControl. Cửa sổ của bạn sau đó chỉ có một điều khiển nội dung và một nút để thay đổi nội dung. Khi nhấp vào nút, bạn có thể gán lại thuộc tính nội dung của điều khiển nội dung.

Tôi đã tạo một ví dụ nhỏ cho việc này.

Các XAML-Code cho MainWindow của bạn có thể trông như thế này:

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

tôi đã bổ sung thêm hai UserControls vào dung dịch. Các CodeBehind cho MainWindow trông giống như:

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

Cập nhật tôi đã tạo ra một usercontrol nhỏ gọi là MyUserControl. Đánh dấu xaml trông giống như

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

Trong sự kiện nhấp chuột ở trên, bạn có thể chỉ định phiên bản mới của người dùng này kiểm soát nội dung. Điều này bạn có thể thực hiện bằng cách:

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

Xin lỗi vì đã ngu ngốc nhưng tôi hoàn toàn ngây thơ, nếu bạn cho tôi thấy một điều khiển người dùng cũng sẽ giúp ích rất nhiều. Cảm ơn bạn đã chia sẻ điều này! –

+1

Tôi đã cập nhật bài đăng của mình. Tôi hy vọng bản cập nhật sẽ giúp bạn. – Tomtom

+2

nhưng điều khiển người dùng cũng được tạo sẵn. bạn sẽ tạo điều khiển người dùng trong thời gian chạy như thế nào? –

Các vấn đề liên quan