Что я хочу сделать, это изменить/сдвинуть содержимое окна wpf одним нажатием кнопки. Я новичок в wpf и понятия не имею, как это сделать. Пожалуйста, если кто-нибудь может мне помочь, я буду очень благодарен. Любые видеоуроки лучше всего подойдут.
Динамическое изменение содержимого в окне wpf
Ответ 1
Вы можете поместить содержимое окна в UserControl. В вашем окне есть только контент-контроль и кнопка для изменения содержимого. Нажав на кнопку, вы можете переназначить контент-свойство управления контентом.
Я сделал небольшой пример для этого.
XAML-код для вашего MainWindow может выглядеть следующим образом:
<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>
Я добавил два решения UserControls в решение. CodeBehind для MainWindow выглядит так:
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>
В приведенном выше щелчке мыши вы можете назначить новый экземпляр этого usercontrol для управления контентом. Это можно сделать:
this.contentControl.Content = new MyUserControl();