WPF 窗口显示为空白

本文关键字:空白 显示 窗口 WPF | 更新日期: 2024-11-05 16:47:54

Excel AddIn, c#, .net 4.0, Windows 7, ribbon我的插件有一个功能区选项卡,几个功能区按钮,单击一个功能区时,加载项将发送多个 Web 服务调用,并弹出一个窗口,在选项卡、树视图、网格视图等中提供数据。树视图、网格视图中的数据是从 Web 服务调用填充的。直到昨天,所有这些都为特定的最终用户工作当他单击按钮时,窗口似乎显示出来,但它有点在Excel后面,无法聚焦。 它也是空白的,没有选项卡、树视图、网格视图等。我已验证所有 Web 服务调用是否正确返回。用户具有窗口 7,Excel 2010(32 位)。我不知道是什么原因造成的。 请帮忙。这是我的 WPF 窗口。谢谢

<Window x:Class="MIMICWPFLib.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:sharedC="clr-namespace:MIMICShared.Converter;assembly=MstarCommodityShared" 
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" 
    xmlns:dxt="clr-namespace:DevExpress.Xpf.Utils.Themes;assembly=DevExpress.Xpf.Core.v11.2"
    xmlns:Controls="clr-namespace:MIMICWPFLib.Controls"
    Title="{Binding Title}"        
Height="600" Width="850" Top="223" Left="164" ResizeMode="CanResize" Closing="WindowClosing"
WindowStyle="ToolWindow">
<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="MainWindowResources.xaml" />
            <ResourceDictionary Source="Controls/BizzySpinner.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <sharedC:BooleanToHiddenVisibility x:Key="boolToVis"/>
        <sharedC:NegativeBooleanToHiddenVisibiltyConverter x:Key="negativeBoolToVis" />
        <DataTemplate x:Key="{dxt:DXTabControlThemeKey ResourceKey=BackgroundTemplate, ThemeName=Office2007Silver}">
            <Border BorderBrush="#FF828790" BorderThickness="1" Background="#E5E3E3"/>
        </DataTemplate>
        <DataTemplate x:Key="{dxt:DXTabControlThemeKey ResourceKey=BackgroundTemplate}">
            <Border BorderBrush="#FF828790" BorderThickness="1" Background="White"/>
        </DataTemplate>
        <ControlTemplate x:Key="{dxt:DXTabControlThemeKey ResourceKey=TopLayoutTemplate}" TargetType="{x:Type dx:DXTabControl}">
            <Grid>
                <KeyboardNavigation.TabNavigation>Local</KeyboardNavigation.TabNavigation>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Grid Grid.Row="0" Margin="0,2,0,0" x:Name="tabHeadersPanel">
                    <KeyboardNavigation.TabIndex>1</KeyboardNavigation.TabIndex>
                    <KeyboardNavigation.DirectionalNavigation>Cycle</KeyboardNavigation.DirectionalNavigation>
                    <KeyboardNavigation.TabNavigation>Once</KeyboardNavigation.TabNavigation>
                    <Panel.ZIndex>1</Panel.ZIndex>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <dx:ClippedContainer Grid.Column="0" UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
                                 Style="{DynamicResource {dxt:DXTabControlInternalThemeKey ResourceKey=ClippedContainerTopLayoutStyle}}">
                        <dx:TabPanelContainer x:Name="panelContainer" Style="{DynamicResource {dxt:DXTabControlInternalThemeKey ResourceKey=PanelContainerTopLayoutStyle}}">
                            <dx:TabPanelContainer.Resources>
                                <Storyboard x:Key="ScrollStoryboard">
                                    <DoubleAnimation Storyboard.TargetName="ItemsPanelTranslate" 
                                         Storyboard.TargetProperty="X" Duration="0:0:0.4" To="0">
                                        <DoubleAnimation.EasingFunction>
                                            <ExponentialEase EasingMode="EaseOut" Exponent="0" />
                                        </DoubleAnimation.EasingFunction>
                                    </DoubleAnimation>
                                </Storyboard>
                            </dx:TabPanelContainer.Resources>
                            <ItemsPresenter>
                                <ItemsPresenter.RenderTransform>
                                    <TranslateTransform x:Name="ItemsPanelTranslate" />
                                </ItemsPresenter.RenderTransform>
                            </ItemsPresenter>
                        </dx:TabPanelContainer>
                    </dx:ClippedContainer>
                    <dx:TabControlScrollButton x:Name="PrevButton" Grid.Column="1" Style="{DynamicResource {dxt:DXTabControlThemeKey ResourceKey=PrevButtonStyle}}" 
                                       Margin="{DynamicResource {dxt:DXTabControlInternalThemeKey ResourceKey=ComponentsSpaceForHorizontalLayouts}}" />
                    <dx:TabControlScrollButton x:Name="NextButton" Grid.Column="2" Style="{DynamicResource {dxt:DXTabControlThemeKey ResourceKey=NextButtonStyle}}" 
                                       Margin="{DynamicResource {dxt:DXTabControlInternalThemeKey ResourceKey=ComponentsSpaceForHorizontalLayouts}}" />
                    <!--<dx:HeaderMenu Grid.Column="3" x:Name="HeaderMenu" IsTabStop="False" Style="{DynamicResource {dxt:DXTabControlThemeKey ResourceKey=HeaderMenuStyle}}" 
                           Margin="{DynamicResource {dxt:DXTabControlInternalThemeKey ResourceKey=ComponentsSpaceForHorizontalLayouts}}" />-->
                    <Controls:HeaderMenuForDXTabControl Grid.Column="3" 
                                    x:Name="HeaderMenu"
                                    IsTabStop="False" 
                                    Style="{DynamicResource {dxt:DXTabControlThemeKey ResourceKey=HeaderMenuStyle}}" 
                                    Margin="{DynamicResource {dxt:DXTabControlInternalThemeKey ResourceKey=ComponentsSpaceForHorizontalLayouts}}" />
                </Grid>
                <Grid Grid.Row="1">
                    <dx:DXContentPresenter  ContentTemplate="{DynamicResource {dxt:DXTabControlThemeKey ResourceKey=BackgroundTemplate}}" IsTabStop="False">
                    </dx:DXContentPresenter>
                    <Grid Margin="1">
                        <dx:DXContentPresenter x:Name="contentPresenter" Margin="{TemplateBinding Padding}" UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
                                   Content="{TemplateBinding SelectedItemContent}" ContentTemplate="{TemplateBinding SelectedItemContentTemplate}">
                            <KeyboardNavigation.TabNavigation>Local</KeyboardNavigation.TabNavigation>
                            <KeyboardNavigation.DirectionalNavigation>Contained</KeyboardNavigation.DirectionalNavigation>
                            <KeyboardNavigation.TabIndex>2</KeyboardNavigation.TabIndex>
                        </dx:DXContentPresenter>
                        <dx:TabControlFastRenderPanel x:Name="fastRenderPanel" Margin="{TemplateBinding Padding}" UseLayoutRounding="{TemplateBinding UseLayoutRounding}" Visibility="Collapsed">
                            <KeyboardNavigation.TabNavigation>Local</KeyboardNavigation.TabNavigation>
                            <KeyboardNavigation.DirectionalNavigation>Contained</KeyboardNavigation.DirectionalNavigation>
                            <KeyboardNavigation.TabIndex>2</KeyboardNavigation.TabIndex>
                        </dx:TabControlFastRenderPanel>
                    </Grid>
                </Grid>
            </Grid>
        </ControlTemplate>
    </ResourceDictionary>        
</Window.Resources>
<Grid>
    <Grid Visibility="{Binding ShowProgress, Converter={StaticResource negativeBoolToVis}}">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" ></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>                
        </Grid.RowDefinitions>            
        <Grid Grid.Row="0">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" MinHeight="65"></RowDefinition>                
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"></ColumnDefinition>
            <ColumnDefinition Width="Auto" MinWidth="2"></ColumnDefinition>               
        </Grid.ColumnDefinitions>
            <Image Grid.Row ="0" Height="37" Width="174" Margin="11,6,0,0" 
                   Name="image1" Stretch="Fill" VerticalAlignment="Top" 
                   HorizontalAlignment="Left" 
                   Source="/MstarCommodityWPFLib;component/Resources/MorningstarLogo_Red.gif" />
            <Border  Grid.ColumnSpan="1" Grid.Row="0" HorizontalAlignment="Right" Margin="0,10,0,0" 
                     Height="50" Width="400" Background="white" BorderThickness="1" BorderBrush="White"  >
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="23"/>
                        <RowDefinition Height="4"/>
                        <RowDefinition Height="23"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                    <ContentControl Content="{Binding Path=SearchBox}" Margin="0 0 5 0" />
                    <TextBlock Grid.Row="0" Grid.Column="1"> 
                    <Hyperlink Click="ShowSettings" TextDecorations="None">
                        <Image Source="{Binding ConfigImageFilePath}"  ></Image>
                    </Hyperlink>
                    </TextBlock>
                    <TextBlock Grid.Row="2" Grid.Column="1"> 
                    <Hyperlink Click="HelpHyperlinkClick"> 
                        <Image Source="{Binding HelpIconFilePath}"></Image>
                    </Hyperlink>
                    </TextBlock>
                </Grid>
            </Border>                
        </Grid>
        <Grid Grid.Row="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"></ColumnDefinition>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
                <ColumnDefinition Name="columnWidth" MaxWidth="350"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Grid x:Name="horizontalGrid">                
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" MinHeight="125"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Name="rowHeight" MinHeight="150"></RowDefinition>
                </Grid.RowDefinitions>
                <dx:DXTabControl Grid.Row="0"  
                    Margin="10 0 5 5"
                    Name="MainTabRegion"  
                    SelectedIndex="{Binding Tabs.SelectedIndex}" 
                    ItemsSource="{Binding Tabs.TabItems}"  
                    DestroyContentOnTabSwitching="False" BorderThickness="5"                          
                    OverridesDefaultStyle="True">
                    <dx:DXTabControl.View>
                        <dx:TabControlScrollView 
                                     ShowHeaderMenu="True"  
                                     AllowHideTabItems="True" 
                                     CloseHeaderMenuOnItemSelecting="True" ShowHiddenTabItemsInHeaderMenu="True" />
                    </dx:DXTabControl.View>
                    <dx:DXTabControl.ItemContainerStyle>
                        <Style TargetType="{x:Type dx:DXTabItem}">
                            <Setter Property="Visibility" Value="{Binding IsVisible, Mode=OneWay, Converter={StaticResource boolToVis}}"/>
                        </Style>
                    </dx:DXTabControl.ItemContainerStyle>
                    <dx:DXTabControl.ItemHeaderTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=Header}" 
                                        Visibility="{Binding IsVisible, Mode=OneWay, Converter={StaticResource boolToVis}}"
                                        OverridesDefaultStyle="True" />
                        </DataTemplate>
                    </dx:DXTabControl.ItemHeaderTemplate>
                </dx:DXTabControl>
                <GridSplitter  Grid.Row="1" 
                  Margin="10 0 5 5"
                  HorizontalAlignment="Stretch" 
                  VerticalAlignment="Stretch"              
                  ShowsPreview="true"
                  ResizeDirection="Rows"                      
                  Height="5" />
                <Border Grid.Row="2" Margin="10 0 5 5">
                    <ContentControl Content="{Binding Path=Basket}" />
                </Border>
            </Grid>
            <GridSplitter Margin="0 20 0 0" Grid.Column="1"
              HorizontalAlignment="Stretch" 
              VerticalAlignment="Stretch"              
              ShowsPreview="true"
              ResizeDirection="Columns"
              x:Name="verticalSplitter"                    
              DragCompleted="OnDragCompleted"
              Width="5" />                
             <Border Grid.RowSpan="3" Grid.Column="2"  Margin="3 20 0 0">
                    <ContentControl Content="{Binding Path=ColumnDataPreview}" />
             </Border>
        </Grid>
    </Grid>
    <Grid Height="25" Width="300" Visibility="{Binding ShowProgress, Converter={StaticResource boolToVis}}">
        <ProgressBar IsIndeterminate="True" Orientation="Horizontal" />
        <Viewbox>
            <TextBlock Text="Loading ..." Padding="50 0"/>
        </Viewbox>
    </Grid>
</Grid>

WPF 窗口显示为空白

我知道

这很旧 - 但我们偶然发现了我们支持的旧版Office加载项 - 一个用户显然遇到了同样的问题。

我们做了一些挖掘,偶然发现了这个类似的SO帖子:Windows 10上的空白WPF子窗口

看起来有两个选项:

  1. 指示用户更新/修复其错误的视频卡驱动程序。

  2. 在代码中加入一个技巧,强制内容在正确的时刻重绘(即 InvalidateVisual还不够,请参阅链接问题的答案以获取更多信息)。