0

假设我有 3 个带有浏览器的不同选项卡项,并且我希望所有选项卡在打开窗口应用程序后同时加载和呈现。

我的问题:对于可以并行或线程渲染的每个选项卡是否有任何方法?

4

2 回答 2

1

您可以使用使用 aListBox而不是默认值的自定义模板来破解它ContentPresenter

   <TabControl>
        <TabItem Header="A">
            <WebBrowser Source="http://www.google.com/" />
        </TabItem>
        <TabItem Header="B">
            <WebBrowser Source="http://www.bing.com/" />
        </TabItem>
        <TabItem Header="C">
            <WebBrowser Source="http://www.yahoo.com/" />
        </TabItem>
        <Control.Template>
            <ControlTemplate TargetType="TabControl">
                <DockPanel>
                    <TabPanel IsItemsHost="True"
                              DockPanel.Dock="{TemplateBinding TabStripPlacement}" />
                    <ListBox ItemsSource="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Items}"
                             SelectedIndex="{TemplateBinding SelectedIndex}">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <Grid />
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                        <ItemsControl.ItemContainerStyle>
                            <Style TargetType="ListBoxItem">
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="ListBoxItem">
                                            <ContentPresenter Content="{Binding Content}"
                                                              ContentTemplate="{Binding ContentTemplate}"
                                                              ContentTemplateSelector="{Binding ContentTemplateSelector}" />
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                                <Setter Property="Visibility"
                                        Value="Hidden" />
                                <Style.Triggers>
                                    <Trigger Property="IsSelected"
                                             Value="True">
                                        <Setter Property="Visibility"
                                                Value="Visible" />
                                    </Trigger>
                                </Style.Triggers>
                            </Style>
                        </ItemsControl.ItemContainerStyle>
                    </ListBox>
                </DockPanel>
            </ControlTemplate>
        </Control.Template>
    </TabControl>
于 2012-04-17T08:42:08.443 回答
0

一个窗口可以在它自己独立的 UI 线程中启动。但是选项卡将在当前窗口启动的 UI 线程上呈现。

于 2012-04-17T07:37:53.050 回答