bitmapimage и image resources

209
10 декабря 2017, 09:19

В приложении при изначальном запуске - отсутствуют иконки. Однако в ресурсах соответствующие Image с заданными ключами присутствуют.

Пример:

  <MenuItem Icon="{DynamicResource MenuIcon}"/>

Внутри файла App.xaml

<Image x:Key="MenuIcon"/>

без заданного св-ва Source.

Асинхронно запускается метод, который разбирает xml файл, и задает св-ва Source у соответствующих Image.

Вопросов несколько:

  1. Является ли данный подход нормальным? (В плане что существует привязка к объектам, которые потенциально могут не использоваться ? ) Если нет - какой выход из ситуации? Добавлять ресурсы походу получения - это понятно, вопрос как потом задавать привязку соответствующих UI элементов к этим ресурсам.
  2. Как организовать что-нибудь аналогичное с BitMapImage ? Который в отличии от Image обязательно требует задавать св-во UriSource ?
Answer 1
  1. Что не очень хорошо — это разделяемый UI-элемент <Image x:Key="MenuIcon"/>. Попробуйте включить его в несколько различных мест и увидите, какие будут баги. Я бы положил в App.xaml ImageSource, и написал так:

    <MenuItem>
        <MenuItem.Icon>
            <Image Source="{DynamicResource MenuIconSource}"/>
        </MenuItem.Icon>
    </MenuItem>
    

    Это задаст пустую картинку. А когда вы разберёте XML-файл, положите нужный ImageSource в Application.Current.Resources (с ключом MenuIconSource), и DynamicResource подхватит новое значение.

  2. BitmapImage — это не контрол, это картинка (точнее, ImageSource). Вставьте его с ключом MenuIconSource в ресурсы. Не забудьте сказать ему Freeze(), когда закончите инициализацию.

READ ALSO
SmtpClient кодировка в заголовке письма

SmtpClient кодировка в заголовке письма

Отправляю письмо с сервера, вот таким вот методом:

198
Как правильно файлы поместить в List&lt;byte[]&gt;?

Как правильно файлы поместить в List<byte[]>?

Получаю список нужных файлов по расширению

213
Не работают стили в браузере в c#

Не работают стили в браузере в c#

Добрейший вечерочекНеобходимо отобразить html страницу со стилями в браузере в Windows Forms (vs 2017)

253
Обновить dataGridView на Form1 при закрытии Form2

Обновить dataGridView на Form1 при закрытии Form2

Нужно чтобы после закрытия формы dataGridView на главной форме обновляла данные, помогите пожалуйста

224