2016-10-21 2 views
0

Я новичок в Blend и WPF, и я бы хотел иметь элемент управления, который имеет свойства ListBox, но с моими собственными пользовательскими элементами. По сути, я хочу, чтобы каждый элемент был закругленным прямоугольником с меткой. Первый способ, по-моему, был с помощью UserControl и StackPanel, хотя я не мог придумать, как сообщить программе, какие объекты имеют фокус. По этой причине я думал, что могу использовать ListBox и, следовательно, создавать пользовательский ListBoxItem, но, очевидно, только прямоугольник может быть преобразован в элемент управления, потеряв метку. Любые указатели будут большой помощью.Как создать пользовательский список в Blend

ответ

0

Вы можете использовать ListBox, и вы не ограничены только прямоугольником, а не ярлыком.

Используйте стандартный ListBox и создайте ListBox.ItemTemplate как можно более сложным. Если вам нужно сложить кучу элементов управления друг над другом, вы можете начать с управления Canvas или Grid и перейти оттуда.

В качестве альтернативы вы можете просто сделать шаблон элемента одним элементом управления Label (если логически элемент ведет себя как метка) и использовать ControlTemplate для полного повторения визуального дерева, отображаемого для этих меток.

Ссылки:

  1. ItemTemplate

  2. ControlTemplate

Вот быстрый пример.

XAML:

<Grid> 
    <ListView ItemsSource="{Binding Path=Labels}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Rectangle Fill="CadetBlue" RadiusX="10" RadiusY="10" SnapsToDevicePixels="True"> 
        </Rectangle> 
        <Label Content="{Binding}" Padding="10"/> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
</Grid> 

"ViewModel":

public IEnumerable<string> Labels 
    { 
     get { return new string[] { "Foo", "Bar", "Baz" }; } 
    } 

И результат:

Output

Смежные вопросы