1

従業員のリストを表示する ListView があり、SelectionChanged イベントごとに、一連のテキスト ボックスに各従業員に関するさまざまな情報が表示されます。

<ListView ItemsSource="{Binding Employees}" x:Name="lvEmployeeList" Grid.Row="1" Grid.Column="1" Width="385" SelectedIndex="0" Margin="1,1,1,1" >
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="SelectionChanged">
                        <i:InvokeCommandAction Command="{Binding ProcessCommand}" CommandParameter="{Binding ElementName=lvEmployeeList, Path=SelectedItem.EmployeeID}" ></i:InvokeCommandAction>
                    </i:EventTrigger>
                </i:Interaction.Triggers>

これはうまくいきます。次に、DataTemplate について学習することを考えたので、今回は ListBox を使用し、Listbox に情報を再度表示します (リストボックスの各行にいくつかのフィールドを表示する単純なバージョンです)。問題は、SelectionChanged が発生したときに、実行時エラー

オブジェクト参照がオブジェクトのインスタンスに設定されていません

    <ListBox x:Name="lstEmployees" ItemsSource="{Binding Employees}" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding EmployeeID}" />
                    <TextBlock Text="{Binding BackgroundID}" />
                    <TextBlock Text="{Binding EmployeeName}" />
                </StackPanel>                        
            </DataTemplate>
        </ListBox.ItemTemplate>
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="SelectionChanged">
                <i:InvokeCommandAction Command="{Binding ProcessCommand}" CommandParameter="{Binding ElementName=lstEmployee, Path=SelectedItem.EmployeeID}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </ListBox>

基本的にViewModelには、次のようなlinqステートメントがあります。

PropertyEmployee = Employees.FirstOrDefault(item => item.EmployeeID == param.ToString());  

このエラーの原因を教えてください。ListView では問題ありませんが、ListBox では null オブジェクトを取得しています。

4

1 に答える 1