Ресурсы Acessing WPF XAML из кода non-WPF

Если вы говорите о типе страницы « Загрузка данных », то да - мастер создает несколько страниц; один из них позволяет вам искать исходный файл. Если каталог удаленного сервера сопоставлен на вашем компьютере, вы увидите его при поиске файла и будете использовать его в качестве источника данных.

7
задан Joey 3 March 2009 в 21:59
поделиться

4 ответа

В Вашем XAML код удостоверяется, что ресурсу значка установили опцию сборки на "Ресурс", и затем сошлитесь на ресурс для создания этого xaml статическим ресурсом

<UserControl.Resources>
    <BitmapImage x:Key="icon1" UriSource="Resources/Icon1.ico" />
</UserControl.Resources>

Затем в Вашем коде.Net 2.0 Вы найдете ресурс в потоке "{xamlName} .g.resource"

Пример кода, который загружает все значки из xaml dll в словарь:

using System.IO;
using System.Reflection;
using System.Collections;
using System.Resources;

...

var icons = new Dictionary<String, Bitmap>();
var externalBaml = Assembly.LoadFile(Path.Combine(Environment.CurrentDirectory, "MyXaml.dll"));
Stream resourceStream = externalBaml.GetManifestResourceStream(externalBaml.GetName().Name + ".g.resources");
using (ResourceReader resourceReader = new ResourceReader(resourceStream)) {
    foreach (DictionaryEntry resourceEntry in resourceReader) {
        if (resourceEntry.Key.ToString().ToUpper().EndsWith(".ICO")) {
            icons.Add(resourceEntry.Key.ToString(), Image.FromStream(resourceEntry.Value as Stream) as Bitmap);
        }
    }
}
2
ответ дан 7 December 2019 в 16:46
поделиться

Мои предложения:

  • Обеспечьте метаданные по своему управлению о том, где значок может быть найден. Можно сделать это с собственным атрибутом (см. пример 1 ниже). Эти метаданные позволят Вам загружать значок, не создавая экземпляр управления.

  • Так как Вы используете MEF, можно использовать метаданные в экспорте для достижения того же как выше. Детали здесь. Посмотрите пример 2 ниже.

  • Рассматривайте свой значок как ImageSource вместо a Brush. Можно использовать WPF's Image управляйте для показа Вашего ImageSource, или можно нарисовать его ImageBrush.

  • Используйте технику, обеспеченную TFD для чтения ресурса с именем, указанным в метаданных. К сожалению, WPF, кажется, не обеспечивает ничего как a BamlReader, который сделал бы его намного более чистым для загрузки ресурса WPF из non-WPF контекста.

Пример 1:

[Icon("MyIconResourceName")]
public class BlahControl : Control
{
    ...
}

Пример 2:

[Export(typeof(IApplicationComponent))]
[ExportMetadata("IconResource", "MyIconResourceName")]
public class BlahControl : Control
{
    ...
}
1
ответ дан 7 December 2019 в 16:46
поделиться

Можно считать ресурсы из блока как поток.

Пример кода здесь: http://www.wpftutorial.net/ReadWPFResourcesFromWinForms.html

0
ответ дан 7 December 2019 в 16:46
поделиться

Определите значки на уровне приложения вместо в управлении, или в app.xaml или в основном словаре ресурса xaml файл. Затем можно использовать тот же метод TryFindResource, но не создавая экземпляр управления.

0
ответ дан 7 December 2019 в 16:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: