Caliburn.Micro를 사용하여 탭 컨트롤에로드 된 스크린 컬렉션이 있습니다.WPF에서 내 TabControl의 모든 TabItems에서 콘텐츠를 강제로로드 할 수 있습니까? (Caliburn.micro 사용)
내 문제는 : 탭 콘텐츠를로드 할 때까지 탭을 클릭하면 표시되지 않습니다. 이미 선택한 인덱스를 하나씩 변경하려고 시도했지만 모든 항목을 활성화하는 등 아무 것도 작동하지 않습니다!
아무도 내가 이것을 해결할 수있는 방법을 알고 있습니까? 나는 아이디어와 머리가 부족합니다. 고마워!
<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);
}
}
}
내가 탭을 클릭하는 경우에만 :(
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;
}
}
확인 http://stackoverflow.com/questions/20852204/how-can-i-force-a-tabitem-to-initialize-content-on-load. 'TabPage.Show()'메소드를 하나씩 호출 할 수 있습니다. – RazvanR