WPF数据网格中的数据网格列复选框可见性 [英] Data Grid column Check Box visibility in WPF Data Grid

查看:64
本文介绍了WPF数据网格中的数据网格列复选框可见性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的所有人,

在WPF中,Data Grid使用了DataGridCheckBoxColumn.仅某些行我要显示此复选框.其他列不应显示该复选框.如何在WPF中的datagrid中实现.

Dear All,

In WPF Data Grid have used DataGridCheckBoxColumn. some rows only I want to display this check Box. other column should not be display the check box. How to implement in datagrid in WPF.

<datagrid removed="Gray" autogeneratecolumns="False" canvas.left="-29" canvas.top="60" height="490" x:name="grd_balance" width="789" gridlinesvisibility="Vertical" selectionmode="Single" verticalscrollbarvisibility="Visible" canuserreordercolumns="False" canuserresizecolumns="False" canuserresizerows="False" canusersortcolumns="False" canuseraddrows="False" xmlns:x="#unknown">
               <datagrid.columns>
                   <datagridcheckboxcolumn binding="{Binding checked}" cellstyle="{StaticResource SingleClick}" />
                   <datagridtextcolumn header="Voucher Date" binding="{Binding voc_date}" fontfamily="Calibri" fontsize="12" canuserresize="False" canusersort="False" width="100" />
                   <datagridtextcolumn header="Voucher No" binding="{Binding vocno}" fontfamily="Calibri" fontsize="12" canuserresize="False" canusersort="False" width="100" /></datagrid.columns>
           </datagrid>



谢谢U,

问候,
Maha S.



Thank U,

Regards,
Maha S.

推荐答案



从数据库中返回另外一列,其中包含有关哪些行必须显示复选框并将其绑定到复选框的visible属性的信息.

希望这会有所帮助.....
Hi,

return one more column from your database which contains the information about which rows have to display the checkbox and bind it to the visible property of the checkbox.

Hope this helps.....




创建一个类并按照命名约定为其命名,并在该类中编写以下代码

Hi,

Create a class and name it as per your naming conventions and write the following code in that class

public class Converters : IValueConverter
   {
       public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
       {
           Visibility rv = Visibility.Visible;
           try
           {
               var x = bool.Parse(value.ToString());
               if (x)
               {
                   rv = Visibility.Visible;
               }
               else
               {
                   rv = Visibility.Collapsed;
               }
           }
           catch (Exception)
           {
           }
           return rv;
       }

       public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
       {
           return value;
       }

   }




现在在您的XAML中注册该类




Now in your XAML register this class

<Window x:Class="WpfTestApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        xmlns:converters="clr-namespace:yournamespace">




并将此转换器添加为资源




and add this converter as a resource

<Canvas.Resources>
            <converters:Converters x:Key="boolToVis"/>

        </Canvas.Resources>




我给出了一个一般示例,按照您的要求进行操作




I am giving a general example manipulate as per your requirement

<CheckBox Canvas.Left="96" Canvas.Top="19" Content="CheckBox" Height="16" Name="checkBox1" IsChecked="True"/>
        <CheckBox Canvas.Left="96" Canvas.Top="54" Content="CheckBox" Height="16" Name="checkBox2" Visibility="{Binding ElementName=checkBox1,Path=IsChecked,Converter={StaticResource boolToVis}}"/>



例如:

< datagridcheckboxcolumn binding ="{已检查绑定}" cellstyle ="{StaticResource SingleClick}"可见性="{Binding Path =您的数据库列名称,Converter = {StaticResource boolToVis}}">



希望这会有所帮助.

如果需要更多详细信息,请告诉我

问候,
斯里曼(Sriman)



Eg:

<datagridcheckboxcolumn binding="{Binding checked}" cellstyle="{StaticResource SingleClick}" visibility="{Binding Path=your database column name,Converter={StaticResource boolToVis}}">



Hope this helps.

Do let me know if you need any more details

Regards,
Sriman


<usercontrol x:class="e_cdsl.Posting.BalanceTransfer" xmlns:x="#unknown">
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:convert="clr-namespace:e_cdsl.Classes" 
             mc:Ignorable="d" Name="DpExport"
             xmlns:my1="clr-namespace:e_cdsl.Custom_Controls"
         Height="741" Width="1019" xmlns:my="clr-namespace:e_cdsl.Classes" >
    <usercontrol.resources>
        <convert:gridformatconverter x:key="convert" xmlns:convert="#unknown" />
        <convert:gridcolorconverter x:key="gridbackcolor" xmlns:convert="#unknown" />
        <convert:gridrowcol x:key="ledtotcol" xmlns:convert="#unknown" />   
        <convert:gridcolumnvisible x:key="discolum" xmlns:convert="#unknown" />
    </usercontrol.resources>
<canvas x:name="layout" height="669" width="753" margin="0,-5,-22,7">
<datagrid background="Gray" autogeneratecolumns="False" canvas.left="-29" canvas.top="60" height="490" x:name="grd_balance" width="789" gridlinesvisibility="Vertical" selectionmode="Single" verticalscrollbarvisibility="Visible" canuserreordercolumns="False" canuserresizecolumns="False" canuserresizerows="False" canusersortcolumns="False" canuseraddrows="False">
                <datagrid.columns>
                    <datagridcheckboxcolumn binding="{Binding checked, Mode=TwoWay}" cellstyle="{StaticResource SingleClick}" x:name="grdchk">                                                 
                        <datagridcheckboxcolumn.elementstyle>
                            <style targettype="CheckBox">
                                <setter property="Visibility" value="{Binding ElementName=grdchk,Path=IsChecked,Converter={StaticResource discolum},Mode=OneWay}" />
                            </style>
                        </datagridcheckboxcolumn.elementstyle>
                    </datagridcheckboxcolumn>                  
                    <datagridtextcolumn header="Voucher Date" binding="{Binding voc_date}" fontfamily="Calibri" fontsize="12" canuserresize="False" canusersort="False" width="100" />
 </datagrid.columns></datagrid>
 </canvas>
</usercontrol>


这篇关于WPF数据网格中的数据网格列复选框可见性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆