Я пытаюсь добавить https://modernuicharts.codeplex.com/ проект WPF в мое решение. Я извлек проекты, которые необходимы для wpf
Library - De.TorstenMandelkow.MetroChart.WPF
TestApplications - TestApplication.Shared
- TestApplicationWPF
De.TorstenMandelkow.MetroChart
Я щелкнул правой кнопкой мыши по моим текущим решениям, и я пошел в Add → Add Existing project и добавил вышеупомянутые проекты.
Когда я устанавливаю TestAplicationWPF в качестве запуска Project, проект выполняется полностью нормально.
Моя цель состоит в том, чтобы иметь кнопку, которая будет отображать современный интерфейс пользовательских интерфейсов в моем другом проекте под названием "WPF".
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.
Моя попытка исправить проблему состояла в том, чтобы создать копию словаря ресурсов в моем проекте "WPF", и она удалила ошибку, но ничего не отображается. Могу ли я спросить, как отобразить MainWindow из TestApplicationWPF
Вот как это исправить:
В библиотеке есть несколько проблем, когда раньше был пакет Nuget, но он был заблокирован, поэтому я покажу вам, как компилировать и ссылаться на библиотеку в вашем приложении WPF.
SourceAndTestApplications.zip
, нажав кнопку "Загрузить" справаMetroChart
где-нибудь и откройте MetroChart.sln
внутри нееЕсли вы используете VS2013, появится следующий экран:
Не о чем беспокоиться, просто нажмите ОК и закройте отчет о миграции, который он открыл в IE
Опять же, если вы находитесь под Windoww 8.1, появится следующее:
Просто нажмите OK.
Теперь вам нужно что-то сделать для компиляции:
De.TorstenMandelkow.MetroChart
Build для De.TorstenMandelkow.MetroChart
Здание
De.TorstenMandelkow.MetroChart.WPF
проект 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>
{
}
}
результат
См. Https://modernuicharts.codeplex.com/documentation для получения справки.