以下是我的DataGrid XAML:
<DataGrid Visibility="Visible" Margin="20" ItemContainerStyle="{x:Null}" OverridesDefaultStyle="False" CellStyle="{x:Null}" Style="{x:Null}" RowStyle="{x:Null}" ColumnHeaderStyle="{x:Null}" Foreground="Black" CanUserAddRows="True" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding Path=MovieList}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Title, Mode=TwoWay}" CanUserResize="True" MaxWidth="450" CanUserSort="True" Header="Title" Width="200" />
<DataGridTemplateColumn Width="130" Header="Type">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Type}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Width="120" ItemsSource="{Binding Path=GenreList}" DisplayMemberPath="Name" SelectedValuePath="ID" Height="Auto" HorizontalAlignment="Center" Name="comboBox1" VerticalAlignment="Top" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
单元格编辑模板有一个ComboBox,它绑定到一个可观察的集合'GenreList'。此集合在ViewModel中初始化。可能是ComboBox没有填充的原因是什么?
答案 0 :(得分:0)
您没有访问ViewModel。您需要前往源 - 一个绑定到ViewModel的可视元素。例如,如果它一直在视图上,我们假设它是UserControl类型,以下将起作用:
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=GenreList}".... />
另一种方法是,如果你想确保从正确的元素中选择绑定,而不是类型的基础,请给你的ViewModel绑定一个名称的元素(我将使用相同的UserControl)
<UserControl x:Name="me".../>
<ComboBox ItemsSource="{Binding ElementName=me, Path=DataContext.GenreList}".... />