связывание источника элемента ComboBox - PullRequest
1 голос
/ 22 декабря 2010

В DataGrid (у него есть ItemSource) мои строки имеют ComboBox, и я хочу связать его ItemSource со списком в ViewModel, но я не могу. поскольку DataContext не является ViewModel, у кого-нибудь есть идея решить эту проблему?

образец:

CilyCollection и StatusList - два списка в ViewModel. и у каждого города есть свойство Status.

<Grid x:Name="LayoutRoot" DataContext="ViewModel">
    <sdk:DataGrid Grid.Row="1"
                  AutoGenerateColumns="False"
                  ItemsSource="{Binding CityCollection}">
        <Controls:DataGrid.Columns>
            <Controls:DataGridTemplateColumn Header="Status">
                <Controls:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{Binding StatusList}"
                                  Margin="2"
                                  SelectedItem="{Binding status,Mode=TwoWay}"
                                  ItemTemplate="{StaticResource StatusTemplate}" />
                    </DataTemplate>
                </Controls:DataGridTemplateColumn.CellTemplate>
            </Controls:DataGridTemplateColumn>
        </Controls:DataGrid.Columns>
    </sdk:DataGrid>
</Grid>

Ответы [ 2 ]

1 голос
/ 22 декабря 2010

У вас есть доступ в вашем шаблоне данных к элементу CilyCollection.Таким образом, вы можете привязать к статусу собственности города.StatusList недоступен.Чтобы связать StatusList, попробуйте:

{Binding ElementName = LayoutRoot, Path = DataContext.StatusList} ">

...

1 голос
/ 22 декабря 2010

Попробуйте с относительной привязкой источника

{Binding DataContext.StatusList, RelativeSource={RelativeSource  AncestorType={x:Type ItemsControl}}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...