Добавление ресурсов в экземпляр окна WPF - PullRequest
0 голосов
/ 19 мая 2018

Я делаю программу AutoCAD .net, в которой в качестве интерфейса используется окно WPF.В настоящее время интерфейс WPF используется в приложении AutoCAD .net, и я вызываю окно из AutoCAD следующим образом.

public class Class1
{
    public static WPFWindow.MainWindow mainWindow = new WPFWindow.MainWindow();

    [CommandMethod("Launch", CommandFlags.Session)]

    public void Launch()
    {
Autodesk.AutoCAD.ApplicationServices.Application.ShowModalWindow(mainWindow);

    }
}

Это работает нормально, пока я не начну добавлять любую форму ресурса в окно WPF.Я добавляю. Например, следующее работает до

<Window x:Class="WPFWindow.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WPFWindow" 
    mc:Ignorable="d"
    Title="Test" Height="450" Width="800"
    WindowStyle="None"
    AllowsTransparency="True"
    >
<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>

            <ResourceDictionary Source="Themes/Styles.xaml"/>

        </ResourceDictionary.MergedDictionaries>

    </ResourceDictionary>

</Window.Resources>

<Grid>
    <Button Content="Press Me"/>

</Grid>

.... Я ссылаюсь на стиль статического ресурса для окна

WindowStyle="None"
    AllowsTransparency="True"
   Style="{StaticResource MainWindow}"
    >

Со статическимресурс, когда я запускаю команду «Запуск» в AutoCAD, программе не удается найти статический ресурс.Я не уверен, как получить экземпляр WPFWindow для поиска ресурса с использованием кода C #.В качестве теста я добавил WPFWindow в качестве ссылки на приложение WPF и сумел получить его для поиска ресурса с помощью Pack URI

    <ResourceDictionary Source="pack://application:,,,/WPFWindow;component/Themes/Styles.xaml"/>

Есть ли эквивалент C #, который я могу использовать для экземпляраWPFWindow.MainWindow?

Ответы [ 2 ]

0 голосов
/ 26 июля 2018

Вы не можете использовать Staticresource в корневом теге для внешних ресурсов.На момент инициализации ресурс отсутствует.Связывание его в ctor перед вызовом InitializeComponent (как вы это сделали) делает то же самое ...

...
WindowStyle="None"
AllowsTransparency="True"
Style="{DynamicResource MainWindow}"
...

будет работать.

0 голосов
/ 27 мая 2018

Мне удалось заставить его работать, добавив ресурсы к окну, на которое я ссылался в его коде позади файлов.

namespace WPFWindow
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        this.Resources.Source = new Uri(@"pack://application:,,,/WPFWindow;component/Themes/Styles.xaml"", UriKind.Absolute);
        InitializeComponent();
    }
}

}

Я думаю, что это позволило статическим ресурсамбыть загруженным до того, как они были вызваны для окна.

...