将现有项目添加到解决方案故障排除

时间:2014-10-14 21:25:18

标签: c# wpf

我正在尝试将https://modernuicharts.codeplex.com/ WPF项目添加到我的解决方案中。 我提取了wpf

所需的项目
Library - De.TorstenMandelkow.MetroChart.WPF
TestApplications - TestApplication.Shared
                 - TestApplicationWPF
De.TorstenMandelkow.MetroChart

我右键点击了我当前的解决方案,然后我去了Add - >添加现有项目并添加上述项目。

当我将TestAplicationWPF设置为启动项目时,项目运行完全正常。

我的目标是有一个按钮,在我的另一个名为" WPF"的项目中显示现代UI图表界面。

WPF - ViewModel

//Button Code
public MainWindow ShowModernUI()
{
    return new TestApplicationWPF.MainWindow();
}

它返回此错误A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll

我检查了内部异常,它给了我"Cannot find resource named 'PageContent',它对应于TestAplicationWPF.MainWindow.xaml代码

TestAplicationWPF.MainWindow.xaml

<ContentControl Content="{Binding}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ContentTemplate="{StaticResource PageContent}" />

页面内容来自TestAplicationWPF中的资源词典。

我尝试解决问题的方法是在我的&#34; WPF&#34;中创建资源字典的副本。项目,它删除了错误但没有显示。请问如何从TestApplicationWPF

显示MainWindow

1 个答案:

答案 0 :(得分:1)

以下是如何修复它:

库有一些问题,曾经有一个Nuget包,但它已经不公开,所以我将向您展示如何在WPF应用程序中编译和引用库。

如果您使用的是VS2013,则会出现以下屏幕:

enter image description here

无需担心,只需按确定并关闭它在IE中打开的迁移报告

同样,如果你在Windoww 8.1下,将出现以下内容:

enter image description here

只需按OK即可。

现在您需要做些准备才能使编译成功:

  1. 打开Configuration Manager
  2. 选择发布版本
  3. 取消构建De.TorstenMandelkow.MetroChart
  4. enter image description here

    <强>建筑

    • 右键单击De.TorstenMandelkow.MetroChart.WPF项目并构建
    • 构建时,在MetroChart\De.TorstenMandelkow.MetroChart.WPF\bin\Release
    • 中找到DLL

    参考项目

    • 创建一个新的WPF项目
    • 添加对De.TorstenMandelkow.MetroChart.dll
    • 的引用

    XAML:

    <Window x:Class="WpfApplication3.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:metroChart="clr-namespace:De.TorstenMandelkow.MetroChart;assembly=De.TorstenMandelkow.MetroChart"
            xmlns:wpfApplication3="clr-namespace:WpfApplication3"
            Title="MainWindow"
            Width="525"
            Height="350">
        <Window.Resources>
            <wpfApplication3:MyObjectCollection x:Key="MyObjectCollection">
                <wpfApplication3:MyObject Category="Category1" Value="100" />
                <wpfApplication3:MyObject Category="Category2" Value="200" />
                <wpfApplication3:MyObject Category="Category3" Value="300" />
            </wpfApplication3:MyObjectCollection>
            <metroChart:ResourceDictionaryCollection x:Key="CustomColors">
                <ResourceDictionary>
                    <SolidColorBrush x:Key="Brush1" Color="#FF5B9BD5" />
                </ResourceDictionary>
                <ResourceDictionary>
                    <SolidColorBrush x:Key="Brush2" Color="#FFED7D31" />
                </ResourceDictionary>
                <ResourceDictionary>
                    <SolidColorBrush x:Key="Brush3" Color="#FFA5A5A5" />
                </ResourceDictionary>
                <ResourceDictionary>
                    <SolidColorBrush x:Key="Brush4" Color="#FFFFC000" />
                </ResourceDictionary>
                <!--  add more values with a different key  -->
            </metroChart:ResourceDictionaryCollection>
        </Window.Resources>
        <Grid>
            <metroChart:PieChart  Palette="{StaticResource CustomColors}"
          >
                <metroChart:PieChart.Series>
                    <metroChart:ChartSeries DisplayMember="Category"
                                            ItemsSource="{StaticResource MyObjectCollection}"
                                            ValueMember="Value" />
                </metroChart:PieChart.Series>
            </metroChart:PieChart>
        </Grid>
    </Window>
    

    代码隐藏:

    using System.Collections.ObjectModel;
    using System.Windows;
    
    namespace WpfApplication3
    {
        /// <summary>
        ///     Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow() {
                InitializeComponent();
            }
        }
    
        internal class MyObject
        {
            public string Category { get; set; }
            public int Value { get; set; }
        }
    
        internal class MyObjectCollection : ObservableCollection<MyObject>
        {
        }
    }
    

    <强>结果

    enter image description here

    请参阅https://modernuicharts.codeplex.com/documentation寻求帮助。