Если вы говорите о типе страницы « Загрузка данных », то да - мастер создает несколько страниц; один из них позволяет вам искать исходный файл. Если каталог удаленного сервера сопоставлен на вашем компьютере, вы увидите его при поиске файла и будете использовать его в качестве источника данных.
В Вашем 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);
}
}
}
Мои предложения:
Обеспечьте метаданные по своему управлению о том, где значок может быть найден. Можно сделать это с собственным атрибутом (см. пример 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
{
...
}
Можно считать ресурсы из блока как поток.
Пример кода здесь: http://www.wpftutorial.net/ReadWPFResourcesFromWinForms.html
Определите значки на уровне приложения вместо в управлении, или в app.xaml или в основном словаре ресурса xaml файл. Затем можно использовать тот же метод TryFindResource, но не создавая экземпляр управления.