Kezdőoldal » Számítástechnika » Programozás » WPF Más . Xaml ablakot megjele...

WPF Más . Xaml ablakot megjeleníteni a MainWindow. Xaml-ben?

Figyelt kérdés

Azt szeretném, hogy a MainWindow.xaml Grid-jében megjelenjen a LoginControl.xaml teljes tartalma.


Addig eljutottam, hogy a LoginControl.xaml.cs DataContext-jét átadjam a MainWindow.xaml.cs-nek.

De ennek a tartalmát megjeleníteni nem tudom.

(Persze ezt úgy szeretném, hogy majd később cserélni tudjam más xaml-ekre is a MainWindow.xaml tartalmát.)


MainWindow.xaml.cs:

public partial class MainWindow : Window

{

ViewModel vm;

public MainWindow()

{

InitializeComponent();

Loaded += MainWindow_Loaded;

}


private void MainWindow_Loaded(object sender, RoutedEventArgs e)

{

vm = ViewModel.GetVM;

DataContext = vm;

}

}


MainWindow.xaml:

<Grid DataContext="{Binding Path=CurrentControl,Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Stretch"/>


LoginControl.xaml.cs

public partial class LoginControl : UserControl

{

ViewModel vm;

public LoginControl()

{

InitializeComponent();

Loaded += LoginControl_Loaded;

}


private void LoginControl_Loaded(object sender, RoutedEventArgs e)

{

vm = ViewModel.GetVM;

DataContext = vm;

}

}



LoginControl.xaml:

<Grid VerticalAlignment="Center">

<StackPanel>

<Label Content="Workload Reporter - Login" FontSize="25" HorizontalAlignment="Center" FontFamily="Sitka Small"></Label>

<Label Foreground="Red" Content="Login Error - UserName/Password incorrect" Visibility="{Binding Path=LoginError,Converter={StaticResource BoolToVisibility}}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14.667"></Label>

<Label Content="Name" FontSize="21.333"></Label>

<TextBox x:Name="txtUserName" FontSize="16" Margin="5"></TextBox>

<Label Content="Password" FontSize="21.333"></Label>

<PasswordBox x:Name="Password" Margin="5"></PasswordBox>

<Button x:Name="btnLogin" Content="Login" Margin="5" Click="btnLogin_Click"></Button>

<Button x:Name="btnChangePassword" Content="Change password" Margin="5" Click="btnChangePassword_Click"></Button>

</StackPanel>

</Grid>



ViewModel.cs:

class ViewModel : INotifyPropertyChanged

{

static ViewModel vm;

ContentControl currentControl;

public event PropertyChangedEventHandler PropertyChanged;


public static ViewModel GetVM

{

get

{

if (vm == null)

{

vm = new ViewModel();

}

return vm;

}

}

public ContentControl CurrentControl

{

get

{

return currentControl;

}

set

{

currentControl = value; RaisePropertyChanged();

}

}

private ViewModel()

{

currentControl = new ContentControls.LoginControl();

}


public void RaisePropertyChanged([CallerMemberName] string name = "")

{

if (PropertyChanged != null)

{

PropertyChanged(this, new PropertyChangedEventArgs(name));

}

}

}



2019. ápr. 29. 13:30
 1/1 A kérdező kommentje:

Végül rájöttem saját magam:


MainWindow.xaml:

<Grid>

<ContentControl Content="{Binding Path=CurrentControl,Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Stretch"></ContentControl>

</Grid>

2019. ápr. 29. 13:55

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!