Установка свойств автоматически сгенерированного списка - PullRequest
3 голосов
/ 03 апреля 2010

Я пытаюсь установить привязки ввода автоматически сгенерированных ListBoxItems привязанного к данным ListBox. Код ниже не работает. Компилятор жалуется, что «Установщик свойств« InputBindings »не может быть установлен, потому что у него нет доступного метода доступа к множеству» Каков правильный синтаксис для установки InputBindings?

    <ListBox.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="ListBoxItem.InputBindings">
                <Setter.Value>
                    <MouseBinding Command="{Binding OpenCommand}" Gesture="LeftDoubleClick"/>
                </Setter.Value>
            </Setter>
        </Style>
    </ListBox.ItemContainerStyle>

PS: постинг не работает с Opera 10.51

Ответы [ 2 ]

3 голосов
/ 03 апреля 2010

Это действительно сложно.

Я нашел для вас два предложенных решения, но, боюсь, оба они не очень просты в реализации Я надеюсь, что это работает для вас!

1 голос
/ 18 октября 2010

Если вы ищете менее «хакерский» способ сделать это, вы можете просто обработать событие Loaded объекта ListBoxItem следующим образом.

        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}">
                <EventSetter Event="Loaded" Handler="ListBoxItem_Loaded" />
            </Style>
        </ListBox.ItemContainerStyle>

Затем в обработчик событий добавьте ваши InputBindings, например, так.

Private Sub ListBoxItem_Loaded(ByVal sender As System.Object, ByVal e As RoutedEventArgs)
    Dim item = DirectCast(sender, ListBoxItem)
    item.InputBindings.Add(New KeyBinding(UserCommands.EditCommand, Key.Enter, ModifierKeys.None))
    item.InputBindings.Add(New KeyBinding(UserCommands.DeleteCommand, Key.Delete, ModifierKeys.None))
    item.InputBindings.Add(New MouseBinding(UserCommands.EditCommand, New MouseGesture(MouseAction.LeftDoubleClick)))
End Sub

Я знаю, что это не идеальное решение MVVM, но это лучший способ, который я обнаружил.

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