如何在WPF 表格中嵌套按钮

Posted weixin_44543308

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在WPF 表格中嵌套按钮相关的知识,希望对你有一定的参考价值。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:WPF   表格嵌套按钮

撰写日期:2020年08月28日

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  一般在WPF中,表格中只是有表格数据,但今天我们来卡下如何在表格数据中添加button按钮,首先我们要在用户控件中写上表格中的表头字段如下:

     <!--表格数据-->

    <GroupBox Grid.Row="1" Header="竞争对手信息">

    <DataGrid x:Name="dgCorrival" IsReadOnly="False" AutoGenerateColumns="False" Background="White" CanUserResizeColumns="False" CanUserResizeRows="False" 

            SelectionMode="Single" Grid.Row="2" CanUserReorderColumns="False"AlternationCount="2"  RowHeaderWidth="0" CanUserAddRows="False" Grid.ColumnSpan="4">

           <DataGrid.Columns>

                <DataGridTemplateColumn Header="选择" Width="80">

                    <DataGridTemplateColumn.CellTemplate >

                        <DataTemplate>

                            <CheckBox x:Name="chk_Choose"></CheckBox>

                         </DataTemplate>

                        </DataGridTemplateColumn.CellTemplate>

                  </DataGridTemplateColumn>

   <DataGridTextColumn Header="竞争对手名称" Binding="Binding CompetitorName" Width="150"/>

    <DataGridTextColumn Header="日志ID" Binding="Binding LogID" Width="10" Visibility="Collapsed"/>

     <DataGridTextColumn Header="联系人" Binding="Binding ClienteleName" Width="100"/>

    <DataGridTextColumn Header="客户ID" Binding="Binding ClienteleID" Width="10" Visibility="Collapsed"/>

      <DataGridTextColumn Header="联系方式" Binding="Binding Email" Width="120"/>

       <DataGridTextColumn Header="所属销售机会" Binding="Binding SalesOpportunity" Width="150"/>

     <DataGridTextColumn Header="销售ID" Binding="Binding MarketID" Width="10" Visibility="Collapsed"/>

      <DataGridTextColumn Header="状态" Binding="Binding StateName" Width="100"/>

     <DataGridTextColumn Header="状态ID" Binding="Binding StateID" Width="10" Visibility="Collapsed"/>

       <DataGridTextColumn Header="可能性" Binding="Binding PossibilityName" Width="100"/>

         <DataGridTextColumn Header="可能性ID" Binding="Binding PossibilityID" Width="10" Visibility="Collapsed"/>

         <DataGridTextColumn Header="竞争时间" Binding="Binding CompetitionTime,StringFormat=\\0:yyyy-MM-dd HH:mm:ss\\" Width="150"/>

          <DataGridTextColumn Header="效果" Binding="Binding Result" Width="100"/>

          <DataGridTextColumn Header="竞争内容" Binding="Binding CompetitiveContent" Width="150"/>

   下图才是在表格数据中存放button的关键:首先用一个DataGridTemplateColumn 在最外面包裹着 接着是DataGridTemplateColumn.CellTemplate 再到DataTemplate 最后就是你要放的按钮了。

      <DataGridTemplateColumn Header="操作" Width="200">

          <DataGridTemplateColumn.CellTemplate >

              <DataTemplate>

               <WrapPanel>

                 <Button Content="[ 修改 ]" Style="StaticResource btnOtherStyle" Width="60" Name="btnUpdate" Click="btnUpdate_Click" Margin="2"/>

                   <Button Content="[ 删除 ]" Style="StaticResource btnOtherStyle" Width="60" Name="btnDelete" Click="btnDelete_Click" Margin="2"/>

                    </WrapPanel>

                    </DataTemplate>

             </DataGridTemplateColumn.CellTemplate>

          </DataGridTemplateColumn>

        </DataGrid.Columns>

   </DataGrid>

 </GroupBox>  

如果你没有给WrapPanel的话就只能放一个按钮,你放两个或两个以上它都会报错,如下图:

 

接下来就是你查询出表格数据后它会在你的表格里面,数据库中的查询方法如下:

 

再接着是服务端的查询方法,如下:

  //操作契约

  [OperationContract]

  //查询竞争对手信息

     public DataSet UserControl_SelectCorrival()

        

            SqlParameter[] mySelectCorrival =

              new SqlParameter("@type",SqlDbType.Char), ;

        mySelectCorrival[0].Value = "UserControl_SelectCorrival";

        DataSet myDataSet = myDAL.QueryDataSet("UC_SalesOpportunity", mySelectCorrival);

            return myDataSet;  

发布服务,去客户端更新服务,再写查询方法,如下:

 

然后运行就能看到你所需要的效果了:如下:

 

它同样也能实现按钮的操作,如修改按钮你点击它就会弹出所对应的窗口、同样删除也能实现对应的功能,如下:

 

 

以上是关于如何在WPF 表格中嵌套按钮的主要内容,如果未能解决你的问题,请参考以下文章

WPF - 如何使用模板创建图像按钮

WPF:关于ScrollViewer中嵌套Datagrid的问题

在Viewpager中的一个Fragment中添加一个ViewPager

bootstarp-table表格中嵌套多个BUTON按钮实现

在Csharp中,我如何计算每次单击特定按钮时都会增加的某个值

如何在 WPF XAML 中使用嵌套类?