Как получить свойство шаблона списка для текущего выбранного элемента? - PullRequest
1 голос
/ 18 марта 2011

У меня есть несколько списков и одна коллекция.Коллекция состоит из структур, и каждая структура содержит несколько цветных кистей.Я установил свойство источника списков в коллекцию, а затем в шаблоне для каждого из списков связал свойство фона холста с одной из кистей.Каждый список отображает разные, но бесплатные цвета в одном и том же порядке.

Моя трудность возникает, когда я пытаюсь получить выбранный цвет из списка.Выбранный элемент является структурой, и я не могу найти способ сказать, какой цвет отображается.Вот некоторый код, чтобы проиллюстрировать проблему:

                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Canvas Background="{Binding colorBrush1}" Width="16" Height="16"/>
                        </DataTemplate>
                    </ListBox.ItemTemplate>

Как мне перейти к свойству Canvas Background для текущего выбранного элемента, чтобы я мог получить цвет выбранного в данный момент элемента?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2012

Как уже упоминалось в foson, если вам нужен цвет текущего элемента и этот элемент привязан к какому-либо объекту, который предоставляет цвет, вы сможете получить его непосредственно из бизнес-объекта.

В соответствии с вашим примером, если вы привязывали список со списком MyListBox к коллекции MyObject со свойством SolidColorBrush colorBrush1, то вы просто получили бы цвет выбранного элемента через ((MyObject)MyListBox.SelectedItem).colorBrush1.Color.

Тем не менее, если вам нужно затем внести изменения в сам визуальный элемент или у вас есть какие-либо другие потребности в знании сгенерированных элементов управления пользовательского интерфейса (как я недавно должен был это сделать), то вы можете получить ListBoxItem выбранного элемента на

var item = (ListBoxItem)MyListBox.ItemContainerGenerator.ContainerFromIndex(MyListBox.SelectedIndex);
0 голосов
/ 18 марта 2011

Мне кажется, что привязка к кистям немного неприятна.Я бы привязал фон к «бизнес-объекту», используя ValueConverter, чтобы получить кисть.Возможно, вы могли бы передать параметр преобразователю значений, какую кисть получить из структуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...