У меня есть View Players, для набора данных установлен ObservableCollection Players из ViewModel MainPlayerViewModel.
В представлении у меня есть сетка данных со столбцами TeamId, Name и Position.Я хочу связать столбец TeamId с помощью комбинированного списка со списком доступных команд из MainTeamViewModel, у которого есть свойство коллекции Teams, но, конечно, я хочу, чтобы MainPlayerViewModel обновлялся всякий раз, когда я обновляю команду для игрока.
Я надеюсь, что вы можете следовать за мной здесь .. Это мой xaml:
<data:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox DataContext="{Binding MainTeam, Mode=OneWay, Source={StaticResource Locator}}"
Height="23" HorizontalAlignment="Left"
Name="cmbTeams" VerticalAlignment="Top" Width="100" ItemsSource="{Binding Teams,
Mode=TwoWay}" SelectedValue="{Binding Path=Model.teamid, Mode=TwoWay}"
DisplayMemberPath="Model.teamid"/>
</DataTemplate>
</data:DataGridTemplateColumn.CellEditingTemplate>
Когда я редактирую ячейку, она показывает список доступных команд, но выбранное значение, которое я выбираю из списка, не появляется вКолонка TeamId
Как мне это сделать?
С уважением,
Майк
ОБНОВЛЕНИЕ: Несмотря на полученную помощьЯ не работал, связывая один вид с двумя разными моделями представления.Полагаю, предлагаемое решение уже давно у меня над головой ... Я не мог установить текст данных для сетки данных в MainTeam, потому что у него есть ItemsSource игроков и выбранный элемент, привязанный к выбранному игроку.В любом случае, я решил оставить его 1 View / 1 ViewModel и создал в моем PlayerViewModel открытое свойство с именем teamVM:
public MainTeamViewModel teamsVM
{
get
{
return ViewModelLocator.Container.Resolve<MainTeamViewModel>();
}
}
Теперь я могу установить для Itemource это новое свойство, и строка моего игрока обновляется при изменениикоманды:
<DataTemplate>
<ComboBox
Height="23" HorizontalAlignment="Left"
Name="cmbTeams" VerticalAlignment="Top" Width="100"
ItemsSource="{Binding teamsVM.Teams,
Mode=TwoWay}" SelectedValue="{Binding Model.teamid, Mode=TwoWay}"
DisplayMemberPath="Model.teamid" SelectedValuePath="Model.teamid"/>
</DataTemplate>
С уважением,
Майк