Ich habe eine Sammlung von Bildschirmen geladen in einem Tab-Steuerelement mit Caliburn.Micro.Wie kann ich den Inhalt von allen TabItems meines TabControl in WPF erzwingen? (unter Verwendung von Caliburn.micro)
Mein Problem ist: Tab-Inhalt wird nicht geladen, bis ich auf die Registerkarte klicken, um es anzuzeigen. Ich habe bereits versucht, den ausgewählten Index einzeln zu ändern, alle Elemente und so weiter zu aktivieren, aber nichts funktioniert!
Weiß jemand wie könnte ich das lösen? Mir gehen Ideen und Haare aus. Danke!
<Controls:MetroWindow x:Class="App.Views.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:Dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
xmlns:cal="http://www.caliburnproject.org"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Dialog:DialogParticipation.Register="{Binding}"
BorderBrush="{DynamicResource AccentColorBrush}"
BorderThickness="1"
WindowStartupLocation="CenterScreen"
WindowState="Maximized"
mc:Ignorable="d">
<Grid>
<TabControl Name="Items" >
</TabControl>
</Grid>
public class ShellViewModel : Conductor<IScreen>.Collection.AllActive
{
protected override void OnViewLoaded(object view)
{
base.OnViewLoaded(view);
int x = 0;
for(int x = 0; x < 5; x++)
{
MyTabViewModel myTabVm = new MyTabViewModel(x.ToString());
Items.Add(myTabVm);
}
}
}
OnViewLoaded Feuer nur, wenn ich auf der Registerkarte klicken :(
public class MyTabViewModel : Screen
{
public MyTabViewModel(string displayName)
{
this.DisplayName = displayName;
this.ViewAttached += SistemaClaroViewModel_ViewAttached;
}
protected override void OnViewLoaded(object view)
{
GetBrowser().Navigate(new Uri("https://www.google.com.br/"));
base.OnViewLoaded(view);
}
public WebBrowser GetBrowser()
{
return ((MyTabView)this.GetView()).Browser;
}
}
Überprüfen Sie http://stackoverflow.com/questions/20852204/how-can-i-force-a-tabitem-to-initialize-content-on-load. Versuchen Sie, 'TabPage.Show()' Methode eins nach dem anderen – RazvanR