我正在尝试将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答案 0 :(得分:1)
以下是如何修复它:
库有一些问题,曾经有一个Nuget包,但它已经不公开,所以我将向您展示如何在WPF应用程序中编译和引用库。
SourceAndTestApplications.zip
MetroChart
文件夹并打开其中的MetroChart.sln
如果您使用的是VS2013,则会出现以下屏幕:
无需担心,只需按确定并关闭它在IE中打开的迁移报告
同样,如果你在Windoww 8.1下,将出现以下内容:
只需按OK即可。
现在您需要做些准备才能使编译成功:
De.TorstenMandelkow.MetroChart
<强>建筑强>
De.TorstenMandelkow.MetroChart.WPF
项目并构建MetroChart\De.TorstenMandelkow.MetroChart.WPF\bin\Release
参考项目
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>
{
}
}
<强>结果强>