Я разрабатываю приложение в Silverlight с C # и MVVM. На одной из страниц у меня есть изображение (как на изображении, а не типа Image
), которое состоит из нескольких Path
. В этом случае они образуют лицо, и я бы хотел, чтобы пользователь мог выбрать несколько частей (глаза, нос, уши ...). Каждый из них является отдельным Path
.
Идея состоит в том, что пользователь может выбрать один из этих векторов и работать с ним. Я бы хотел, чтобы выбранный цвет менял цвет.
Я могу записать преобразованный bool
в выбранный цвет, это не проблема. Проблема заключается в добавлении логики выбора.
Моя идея заключалась в том, чтобы обернуть его в ListBox
, отредактировав ItemTemplate
, добавив в него Path
, но эта позиция неправильно указала пути. Даже после применения полей и т. П. Я не мог получить это должным образом.
У кого-нибудь есть опыт или рекомендации по этому вопросу?
Заранее спасибо!
ОТВЕТ:
1) Измените шаблон ItemsPanel на свой контейнер:
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Width="208"
Height="391" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
2) Установите ItemsSource:
Хитрость в том, что атрибуты позиционирования / присоединения работают только с непосредственными потомками ListBox. В этом случае я использую Canvas.Top и Canvas.Left. Решение состоит в том, чтобы обернуть каждый элемент в дополнительный ListBoxItem и применить эти атрибуты к ListBoxItem. (Это произойдет по умолчанию, если вы этого не сделаете).
<ListBox>
<ListBoxItem Canvas.Left="10" Canvas.Top="5">
<Path Data="..." Height="200" Width="200" Fill="Black" />
</ListBoxItem>
</ListBox>