Автоматически выбрать элемент из заполненного списка со связыванием?Silverlight - PullRequest
3 голосов
/ 25 июля 2011

Допустим, у меня есть следующие два элемента управления.

<ListBox ItemsSource="{Binding Path=Events}"
         DisplayMemberPath="Name"
         SelectedItem="{Binding SelectedEvent, Mode=TwoWay}"
         Grid.Column="0" Grid.RowSpan="4" Margin="5"/>

и

<ComboBox x:Name="VenueBox"
          ItemsSource="{Binding Path=VenueNames}"
          SelectedItem="{Binding Path=SelectedVenueName, Mode=TwoWay}"
          Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"
          Margin="10"/>

ListBox связан с ObservableCollection, которая "содержит" пользовательский класс. ComboBox привязан к ObservableCollection строк. Теперь у пользовательского класса есть строковое свойство, значения которого взяты из выпадающего списка. Я хочу, чтобы я выбрал элемент в ListBox, а затем автоматически выбрал это значение в ComboBox. Возможно ли это с чистым XAML или какое-то действие в коде является обязательным? Я надеюсь, что мое объяснение понятно, спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Если вы можете позволить себе связывать SelectedItem ComboBox по-разному (выделенное свойство в любом случае кажется излишним, поскольку у вас уже есть SelectedEvent) , это следует сделать:

SelectedItem="{Binding Path=SelectedEvent.Venue, Mode=TwoWay}"

(я не знаю фактического названия объекта недвижимости, так что его, возможно, придется адаптировать к вашей модели)

0 голосов
/ 25 июля 2011

Я собираюсь читать между строк здесь. У вас есть класс «Событие», который представляет какое-то событие. События происходят в определенную дату и время, и в месте, которое мы называем «Место проведения», класс «Событие» имеет строковое свойство, которое является названием места.

У вас также есть список возможных названий мест.

Объект, к которому вы привязываетесь, имеет свойство SelectedEvent типа "Событие" и свойство SelectedVenue типа string. Правило, которое вы хотите применить, заключается в том, что когда событие выбрано в списке, SelectedVenue может быть только местом, указанным событием.

Таким образом, реальный вопрос заключается в следующем: Куда относится применение этого правила?

Это не совсем задача представления, которое нужно применить. Модель, к которой вы привязаны, должна знать об этом правиле. Код в установщике свойств SelectedEvent должен обеспечивать применение правильного значения SelectedVenue.

В этом случае представление будет просто отражать текущее состояние модели, но ответственность за понимание того, какое «правильное» состояние не принадлежит представлению, лежит на модели.

...