【问题标题】:casting wpf datagrid to another usercontrol on click event在单击事件上将 wpf 数据网格投射到另一个用户控件
【发布时间】:2021-05-09 09:02:22
【问题描述】:

我正在尝试使用单击事件 som add in datagrid 列将我的 wpf userList(a user control) 中的 datagrid 转换为 userUpdate(usercontrol)。

更新视图显示来自数据网格的信息,但是当我尝试使用 sql 查询按 id 更新信息时,查询找不到 id。

我正在使用 MVVM

这里是代码。

    private void Update_Click(object sender, RoutedEventArgse)
    {
        update = new UpdateUser();
        var row = userList.SelectedItem;
        var user = (Users)row;
        update.id.Content = user.id.ToString();
        btnAdd.Children.Clear();
        gridData.Children.Clear();
        gridData.Children.Add(update);

    }

和我的数据网格 XAML

<DataGrid   x:Name="userList" AutoGenerateColumns="False" IsReadOnly="True" ItemsSource="{Binding Path=UserList}"   Background="#FFF" >
            <DataGrid.Columns>
                <DataGridTextColumn Header="ID" Width="*" Binding="{Binding id}" />
                <DataGridTextColumn Header="First name" Width="*" Binding="{Binding Firstname}" />
                <DataGridTextColumn Header="Last name" Width="*" Binding="{Binding Lastname}" />
                <DataGridTextColumn Header="Username" Width="*" Binding="{Binding Username}" />
                <DataGridTextColumn Header="Email" Width="*" Binding="{Binding Email}" />
                <DataGridTextColumn Header="Corporation" Width="*" Binding="{Binding CorName}" />
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button x:Name="Update" Background="#FF17A2B8"  BorderBrush="#FF17A2B8" Foreground="White" Click="Update_Click" >Update</Button>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button x:Name="btnDelete" Background="#FFDA0202" BorderBrush="#FFDA0202" Foreground="White" Click="btnDelete_Click">Delete</Button>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

            </DataGrid.Columns>
        </DataGrid>
    

这是我的更新用户控件

<Grid Grid.Row="1"  Background="White">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="3*" />
        <ColumnDefinition Width="5*" />
        <ColumnDefinition Width="3*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition  Height="auto"/>
        <RowDefinition  Height="auto"/>
        <RowDefinition  Height="auto"/>
        <RowDefinition  Height="auto"/>
        <RowDefinition  Height="auto"/>
        <RowDefinition  Height="auto"/>
        <RowDefinition  Height="auto"/>
        <RowDefinition  Height="auto"/>
        <RowDefinition  Height="auto"/>
        <RowDefinition  Height="auto"/>
        <RowDefinition  Height="*"/>
    </Grid.RowDefinitions>
    <StackPanel Grid.Column="1" Grid.Row="9" Margin="10">
        <TextBox x:Name="fsdName" Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap"  materialDesign:HintAssist.Hint="First Name"  />
    </StackPanel>
    <StackPanel Grid.Column="1" Grid.Row="1" Margin="10">
        <TextBox x:Name="fName"  Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap"  materialDesign:HintAssist.Hint="First Name"  />
    </StackPanel>
    <StackPanel Grid.Column="1" Grid.Row="2" Margin="10">
        <TextBox x:Name="lName" Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap"  materialDesign:HintAssist.Hint="Last Name" />
    </StackPanel>
    <StackPanel Grid.Column="1" Grid.Row="3" Margin="10">
        <TextBox x:Name="username" Text="{Binding Path=CurrentUser.Username,Mode=TwoWay}"  Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap"  materialDesign:HintAssist.Hint="User Name"  />
    </StackPanel>
    <StackPanel Grid.Column="1" Grid.Row="9" Margin="10">
        <TextBox x:Name="usesdfrname" Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap"  materialDesign:HintAssist.Hint="User Name"  />
    </StackPanel>
    <StackPanel Grid.Column="1" Grid.Row="4" Margin="10">
        <PasswordBox  x:Name="Password" Style="{StaticResource MaterialDesignOutlinedPasswordBox}"   materialDesign:HintAssist.Hint="Password" BorderBrush="#89000000" />
    </StackPanel>

    <StackPanel Grid.Column="1" Grid.Row="6" Margin="10">
        <TextBox x:Name="Email"  Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap"  materialDesign:HintAssist.Hint="E-mail" />
    </StackPanel>
    <StackPanel Grid.Column="1" Grid.Row="7" Margin="10">
        <TextBox x:Name="tel"  Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap"  materialDesign:HintAssist.Hint="Telefon"  />
    </StackPanel>
    <StackPanel  Grid.Column="1" Grid.Row="8"  Margin="10">
        <Button x:Name="Update" Style="{StaticResource MaterialDesignRaisedAccentButton}" ToolTip="Resource name: MaterialDesignRaisedAccentButton" materialDesign:RippleAssist.IsDisabled="True" Content="Update  user" Width="173" Background="#FF1B8524"  Command="{Binding Path=UpdateCommand}" BorderBrush="#FF1B8524" Foreground="#DDFFFFFF" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </StackPanel>
    <Label Grid.Column="0" x:Name="id" HorizontalAlignment="Left" Grid.Row="1" VerticalAlignment="Top"/>
    <Label Content="{Binding  Path=Message}" Grid.Column="1" HorizontalAlignment="Left" Grid.Row="1" VerticalAlignment="Top"/>
</Grid>

所以我需要从 userList 控件中的 datagrid 到 userUpdate 控件的 id,我不知道这是否可能,但请尝试:D

非常感谢

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    您好,您是否尝试在此 ID 列中添加名称?并通过输入 myID 从代码中获取它?

    <DataGridTextColumn x:Name="myID"  Header="ID" Width="*" Binding="{Binding id}" />
    

    【讨论】:

    • 是的,我试过在更新视图中打印 system.windows.control.datagridtextcoulmn
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    相关资源
    最近更新 更多