WPF DataGrid控件 DataGridTemplateColumn显现隐藏的绑定方式

采用常规的绑定方式,是无法直接对DataGridTemplateColumn的Visibility属性进行绑定的,直接无效,究其原因,是由于Column集合只是DataGrid的一个属性,这个集合在逻辑树或者视觉树中是看不到的,也不会继承DataContext属性。

解决方式:

1.先创建一个Converter类,继承IValueConverter

/*----------------------------------------------------------------
 * 作    者 :姜  彦 
 * 项目名称 :Utility.Tool.ViewModel.Converter
 * 类 名 称 :BoolConverter 
 * 命名空间 :Utility.Tool.ViewModel.Converter
 * CLR 版本 :4.0.30319.42000
 * 创建时间 :2018/12/20 11:50:32
 * 当前版本 :1.0.0.1 
 * My Email :jiangyan2008.521@gmail.com 
 *            jiangyan2008.521@qq.com   
 * 描述说明: 
 * 
 * 修改历史: 
 * 
*******************************************************************
 * Copyright @ JiangYan 2018. All rights reserved.
*******************************************************************
------------------------------------------------------------------*/

using System;
using System.Windows.Data;

namespace Utility.Tool.ViewModel.Converter
{
    /// <summary>
    /// BoolConverter
    /// </summary>
    public class BoolConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value != null)
            {
                switch ((bool)value)
                {
                    case false:
                        return System.Windows.Visibility.Collapsed;
                    case true:
                        return System.Windows.Visibility.Visible;
                    default:
                        return System.Windows.Visibility.Collapsed;
                }
            }
            return false;
        }

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

/*----------------------------------------------------------------
 * 备    注 :
 * 
 * 
 * 
*******************************************************************
 * Copyright @ JiangYan 2018. All rights reserved.
*******************************************************************
------------------------------------------------------------------*/
View Code

2.View端配置Converter资源

<Window.Resources>        
        <converter:BoolConverter x:Key="BoolConverter" />
 </Window.Resources>
    
View Code

3.DataGridTemplateColumn的Visibility属性进行绑定,通过一个CheckBox的IsChecked属性来控制

<DataGridTemplateColumn Header="Ints"
                                                Width="140"
                                                Visibility="{Binding Source={x:Reference cboxShowFrameStruct},Path=IsChecked,Converter={StaticResource BoolConverter}}">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Grid Background="Transparent"
                                          Margin="-2">
                                        <View:DatasPickerView Height="20"
                                                              DataCount="{Binding IntCount}"
                                                              Datas="{Binding Ints,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"                                                                
                                                              HorizontalAlignment="Center"
                                                              VerticalAlignment="Center">
                                            <View:DatasPickerView.Style>
                                                <Style TargetType="{x:Type View:DatasPickerView}">
                                                    <Style.Triggers>

                                                        <DataTrigger Binding="{Binding FrameColor}"
                                                                     Value="True">
                                                            <Setter Property="Foreground"
                                                                    Value="Red" />
                                                        </DataTrigger>

                                                        <DataTrigger Binding="{Binding FrameColor}"
                                                                     Value="False">
                                                            <Setter Property="Foreground"
                                                                    Value="Green" />
                                                        </DataTrigger>

                                                    </Style.Triggers>
                                                </Style>
                                            </View:DatasPickerView.Style>
                                            
                                        </View:DatasPickerView>
                                    </Grid>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>                            
                        </DataGridTemplateColumn>
View Code

4.记得添加一个CheckBox控件来控制就可以了

posted @ 2018-12-20 14:22  <--青青子衿-->  阅读(1949)  评论(0编辑  收藏  举报
// /**/ // 在页脚Html代码 引入 // function btn_donateClick() { var DivPopup = document.getElementById('Div_popup'); var DivMasklayer = document.getElementById('div_masklayer'); DivMasklayer.style.display = 'block'; DivPopup.style.display = 'block'; var h = Div_popup.clientHeight; with (Div_popup.style) { marginTop = -h / 2 + 'px'; } } function MasklayerClick() { var masklayer = document.getElementById('div_masklayer'); var divImg = document.getElementById("Div_popup"); masklayer.style.display = "none"; divImg.style.display = "none"; } setTimeout( function () { document.getElementById('div_masklayer').onclick = MasklayerClick; document.getElementById('btn_donate').onclick = btn_donateClick; var a_gzw = document.getElementById("guanzhuwo"); a_gzw.href = "javascript:void(0);"; $("#guanzhuwo").attr("onclick","follow('33513f9f-ba13-e011-ac81-842b2b196315');"); }, 900);