2

WPF で Datagrid を使用して、LINQ-SQL 式から返されたユーザーの行をリストに表示しています。

private void admin_tab_GotFocus(object sender, RoutedEventArgs e)
{
    if (dbMethods.CheckDatabaseConnection())
    {
        using (PubsDataContext db = new PubsDataContext())
        {
            var Allusers = new List<Application_User>(from users in db.Application_Users
                                                      select users);
            users_DataGrid.DataContext = Allusers;
        }
    }
}

ユーザーは、すべての情報をそのままにして、行ごとに問題なくロードします。ただし、行を左クリックしても行は選択されず、イベントが渡されないように見えます。私は MouseDown イベントを追加し、右クリックのみをキャプチャできますが、左クリックはキャプチャできません。

Datagrid の XAML は次のとおりです。

<DataGrid AutoGenerateColumns="True" Margin="6,6,6,215" Name="users_DataGrid" 
                              CanUserAddRows="True" ItemsSource="{Binding}" Height="286" Width="246"
                              MouseLeftButtonDown="users_DataGrid_MouseLeftButtonDown" MouseDown="users_DataGrid_MouseDown"/>

これは、XAML と C# の両方で、別のウィンドウの別のデータグリッドに対して使用したコードと同じです。比較用のサンプルは次のとおりです。

XAML

<DataGrid AutoGenerateColumns="True" Margin="1,136,1,207" Name="studentLearningExperiences_DataGrid" ItemsSource="{Binding}"
          HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" CanUserAddRows="True">
    <DataGrid.ContextMenu>
        <ContextMenu Name="studentLearningExperiences_ContextMenu">
            <!--HACK BUG - currently does not work with the button click <MenuItem Header="Save" Click="learningExperienceSave_BTN_Click" /> -->
            <MenuItem Header="Delete" Click="Delete_MenuItem_Click" />
        </ContextMenu>
    </DataGrid.ContextMenu>
</DataGrid>

C#

public void LoadStudentLearningExperiences()
{
    if (dbMethods.CheckDatabaseConnection())
    {
        using (PubsDataContext db = new PubsDataContext())
        {
            var completionList = new List<Learning_Experience>(from s in db.Learning_Experiences
                                                               where s.Student_ID == student.Student_ID
                                                               select s);
            studentLearningExperiences_DataGrid.DataContext = completionList;
        }
    }
}

エラーがあるかどうか、何かを見逃しているかどうか、または経験からのアドバイスを誰かが見つけることができますか? このリンクを参照しましたセルを編集できず、SQL Server テーブルが TexBox ではなく TextBlock を作成しているかどうか疑問に思っていますが、SQL Server のテーブルも同じように見えます。

4

2 に答える 2