在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>
答案 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;
...