0

以下は私の 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>

セル編集テンプレートには、監視可能なコレクション「GenreList」にバインドされた ComboBox があります。このコレクションは ViewModel で初期化されます。ComboBox が読み込まれない理由は何ですか?

4

1 に答える 1

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}".... />
于 2012-07-05T20:16:06.977 に答える