绑定ComboBox项目源

时间:2010-12-22 07:15:19

标签: c# silverlight xaml mvvm

DataGrid(它有ItemSource)我的行有一个ComboBox,我希望将其ItemSource绑定到ViewModel中的列表,但我不能。因为DataContext不是ViewModel,任何人都有想法解决这个问题吗?

示例:

CilyCollectionStatusListViewModel中的两个列表。每个城市都有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 个答案:

答案 0 :(得分:1)

尝试使用相对源绑定

{Binding DataContext.StatusList, RelativeSource={RelativeSource  AncestorType={x:Type ItemsControl}}}

答案 1 :(得分:1)

您可以在DataTemplate中访问CilyCollection项。所以你可以绑定到city的Status属性。无法访问StatusList。要绑定StatusList,请尝试:

  

&LT; DataTemplate&gt;

     

&LT; ComboBox ItemsSource =“ {Binding ElementName = LayoutRoot,Path = DataContext.StatusList} ”&gt;

     

...