我的应用程序中有一个奇怪的Bug。每当显示AboutDialog时,主窗口上的companylogo就会消失。
我发现这与多个同时使用相同资源的窗口有关。 在我的测试应用程序中,我正在启动两个这样的窗口:
void App_Startup(object sender, StartupEventArgs e)
{
MainWindow mainWindow = new MainWindow();
mainWindow.Top = 100;
mainWindow.Left = 900;
mainWindow.Show();
}
在我的Mainwindow上我使用ContentPresenter,其路径存储为Application资源。字符串不会发生这种情况。但我的徽标只显示在一个窗口上。
<StackPanel>
<ContentPresenter x:Name="Logo" Content="{DynamicResource BrandingLogo}" Margin="20" HorizontalAlignment="Center"/>
<TextBox Text="{DynamicResource MyConstString}"/>
</StackPanel>
有没有人知道如何解决这个问题?
编辑:
在我的真实世界应用程序中,我的徽标存储在ResourceDictionary中,因此无法将x:Shared设置为false。
答案 0 :(得分:1)
在x:Shared = false
资源上设置Canvas
以便每次都返回新实例。
<Canvas x:Key="BrandingLogo" x:Shared = "false"/>