c# - “在 'System.Windows.Baml2006.TypeConverterMarkupExtension' 上提供值引发异常。”

标签 c# wpf xaml

当我在 WPF 中打开一个窗口时抛出标题中的异常,奇怪的是这在我的 Windows 7 开发机器上没有发生,在 Windows 7 上部署时也没有发生。

我只在 Windows XP 上遇到此错误,而且是在我第二次打开窗口时遇到此错误。

这是打开窗口的代码:

ReportParametersWindow win = null;

      bool canOverWrite = _shownReports.Contains(rpt.FriendlyName);

      if (!(canOverWrite))
        win = new ReportParametersWindow(rpt.FriendlyName, rpt.ReportParameters, canOverWrite);
      else
        win = new ReportParametersWindow(rpt.FriendlyName, (container.ParametersWindow as ReportParametersWindow).Controls, canOverWrite);

      win.ShowDialog();

以及窗口的 XAML:

<Window xmlns:my="clr-namespace:MHA.Modules.Core.Controls;assembly=MHA.Modules.Core"  
    x:Class="MHA.Modules.Reports.Views.ReportParametersWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Parameters" Height="500" Width="600" MinWidth="500" MaxHeight="500" 
    Icon="/MHA.Modules.Reports;component/Images/Parameters.ico" SizeToContent="WidthAndHeight" 
    WindowStartupLocation="CenterScreen"
    xmlns:odc="clr-namespace:Odyssey.Controls;assembly=Odyssey" Closed="Window_Closed">

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="40"/>
    </Grid.RowDefinitions>
    <ScrollViewer Grid.Row="0" Name="ScrollViewer1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" CanContentScroll="True">
        <StackPanel Name="ParameterStack">
            <my:LocationCtl Text="Parameters for report - " Name="loc"/>
        </StackPanel>
    </ScrollViewer>
    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

        <CheckBox ToolTip="This will replace the first report of the same type that was shown." Name="chkOverwrite" Content="Overwrite old" VerticalAlignment="Center" Margin="5,0"></CheckBox>

        <Button Grid.Column="2" HorizontalAlignment="Right" Margin="5,0" Height="30" Style="{StaticResource DionysusButton}" Width="100" IsDefault="True" Click="Button_Click">
            <StackPanel Orientation="Horizontal">
                <Image Source="/MHA.Modules.Reports;component/Images/Success.png"></Image>
                <TextBlock Margin="5,0" Text="Accept" VerticalAlignment="Center"></TextBlock>
            </StackPanel>
        </Button>
    </Grid>
</Grid>

有人有什么建议吗?

最佳答案

这个解决方案很奇怪,但我想通了。

我意识到错误发生在窗口的 InitializeComponent() 上,然后我向构造函数添加了一个 try catch 并显示了 Exception 的 InnerException。

我收到的错误是“无法识别图像格式”。

我不知道为什么这只发生在 XP 和第二次显示窗口时,但是通过将我的 .ico 替换为 .png,问题就解决了。

希望这对某人有帮助。

关于c# - “在 'System.Windows.Baml2006.TypeConverterMarkupExtension' 上提供值引发异常。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12833294/

相关文章:

c# - 在wpf中制作像Photoshop一样的快速绘图 Canvas

c# - 更新绑定(bind)源后如何执行 ICommand?

c# - WPF 每次打开和关闭窗口时增加内存

xaml - 如何在 UWP XAML NavigationView MenuItems 中混合动态和静态项?

wpf - 将 UserControl 属性绑定(bind)到父数据上下文

c# - 比较对象并确定通用类型

c# - ASP.NET - 模型对象列表的 API Url

c# - 类型存在于共享项目引用和在构建时为每个项目提供自己的 DLL 构建库的错误中

c# - 如何使用 ASP.NET Core RC2 MVC6 和 IIS7 获取当前 Windows 用户

wpf - 从datagrid中的一行中的选定单元格中删除边框