У меня есть список с настраиваемой панелью стека (сейчас просто класс расширил стековую панель, но я надеюсь сделать здесь некоторую анимацию) в качестве его панели элементов. Теперь, когда выбор меняется, я подумал о том, чтобы сделать красивую анимацию между последним выбранным элементом и текущим выбранным элементом.
Теперь моя проблема в том, как мне получить выбранный элемент на панели элементов?
Вот как я определяю свои itemspanel
<ItemsPanelTemplate>
<l:CustomStackPanel SelectedItem="{Binding SelectedItem,ElementName=listbox}" IsItemsHost="True" Orientation="Vertical"/>
</ItemsPanelTemplate>
Я создал свойство зависимостей в своей пользовательской панели стека под названием SelectedItem
public UIElement SelectedItem
{
get { return (UIElement)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
// Using a DependencyProperty as the backing store for SelectedItem. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register("SelectedItem", typeof(UIElement), typeof(CustomStackPanel), new PropertyMetadata(null,selectionChanged));
И я подумал, что могу просто привязать selectedItem в моем списке к выбранному элементу на панели стека. Но такой подход просто не работает.
Другая мысль заключалась в том, чтобы переопределить предварительный просмотр на панели стека и найти соответствующий элемент в дочерних элементах панели стека. Но опять же, я не знаю, как найти этот предмет.
SelectedItem
будет не типаUIElement
, а типа связанного элемента списка.Selector.SelectedItem
относится к типуObject
. Вы хотитеListBoxItem
? - person dkozl   schedule 26.06.2014ListBoxItem
для отображения, ноSelectedItem(s)
остаются в привязанном типе элемента списка. Вы можете получитьListBoxItem
изSelectedItem
, используя _ 5_ - person dkozl   schedule 26.06.2014