سلام
یک ویندوز دارم که ویندوز اصلی نرم افزار هستش . می خوام ویندوزهای دیگه که show می شن داخل ویندوز اصلی dock بشن و parent شون ویندوز اصلی باشه. البته اگر بشه که چند تا ویندوز با هم show بشن و هرکدوم به صورت جداگانه به صورت تب باز بشن که عالیه.
می خوام این کار به صورت دینامیک و درون codeBehind انجام بشه و حتما از کنترل ویندوز استفاده کنم و از usercontrol استفاده نشه.
مرسی
برای این کار کافی ست در صفحه اصلی خودتون یک منو و یک پنل (مثلا : stackpanel )داشته باشید که رویداد کلیک آیتم های منو usercontrol مورد نظر شما را داخل stackpanel شما لود کند ، به کد زیر توجه کنید :
XAML صفحه اصلی شما :
<Window x:Class="UserControlExample.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" FlowDirection="RightToLeft"> <Border Background="White" BorderBrush="Black" BorderThickness="1,1,1,1" CornerRadius="10"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="25" /> <RowDefinition Height="*"></RowDefinition> </Grid.RowDefinitions> <Menu> <MenuItem Click="btnUser1_Click" Header="ماشین حساب"/> <MenuItem Click="btnUser2_Click" Header="تصویر" /> </Menu> <StackPanel Name="MyStack" Grid.Row="1" Height="Auto" Background="Beige"> </StackPanel> </Grid> </Border> </Window>
کد سی شارپ مربوط رویداد های منو های شما برای لود usercontrol :
private void btnUser1_Click(object sender, RoutedEventArgs e) { MyStack.Children.Clear(); Calculator myu = new Calculator(); myu.Width = MyStack.ActualWidth; myu.Height = MyStack.ActualHeight; MyStack.Children.Add(myu); } private void btnUser2_Click(object sender, RoutedEventArgs e) { MyStack.Children.Clear(); ucImage myu = new ucImage(); myu.Width = MyStack.ActualWidth; myu.Height = MyStack.ActualHeight; MyStack.Children.Add(myu); }
برای مثال Calculator و ucImage کلاس های usercontrol شما می باشد که از آن ها نمونه ای می سازیم و به stackpanel صفحه اصلی add میکنیم.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)