如何使用MVVM在WPF中自动隐藏DataGrid列? [英] How to hide DataGrid column in WPF automatically using MVVM?

查看:93
本文介绍了如何使用MVVM在WPF中自动隐藏DataGrid列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用MVVM(无代码隐藏),我想在选择时隐藏DataGrid列,我有以下代码:

Using MVVM (no code-behind), I want to hide my DataGrid columns upon selection, I have following code:

<DataGrid ItemsSource="{Binding SSID}" Grid.Row="1"  Margin="10,10,0,0" Height="200" Width="500" Grid.ColumnSpan="2" Name="dg" HorizontalAlignment="Left" AutoGenerateColumns="False">
    <DataGrid.Columns>
      <DataGridTextColumn Header="Network ID" Binding="{Binding _networkID}"></DataGridTextColumn>
      <DataGridTextColumn Header="SSID" Binding="{Binding _ssid}"></DataGridTextColumn>
      <DataGridTextColumn Header="VLAN" Binding="{Binding _vlan}"></DataGridTextColumn>
      <DataGridTextColumn Visibility="{Binding _authenticationMode}" Binding="{Binding _authenticationMode}"></DataGridTextColumn>
      <DataGridTextColumn Visibility="{Binding _authentication}" Binding="{Binding _authentication}"></DataGridTextColumn>
      <DataGridTextColumn Visibility="{Binding _staticWEPKeyType}" Binding="{Binding _staticWEPKeyType}"></DataGridTextColumn>
      <DataGridTextColumn Visibility="{Binding _staticWEPKeyLength}" Binding="{Binding _staticWEPKeyLength}"></DataGridTextColumn>
      <DataGridTextColumn Visibility="{Binding _staticWEPKey1}" Binding="{Binding _staticWEPKey1}"></DataGridTextColumn>
      <DataGridTextColumn Visibility="{Binding _staticWEPKey2}" Binding="{Binding _staticWEPKey2}"></DataGridTextColumn>
      <DataGridTextColumn Visibility="{Binding _staticWEPKey3}" Binding="{Binding _staticWEPKey3}"></DataGridTextColumn>
      <DataGridTextColumn Visibility="{Binding _staticWEPKey4}" Binding="{Binding _staticWEPKey4}"></DataGridTextColumn>
      <DataGridTextColumn Visibility="{Binding _wpaPersonalKeyAC}" Binding="{Binding _wpaPersonalKeyAC}"></DataGridTextColumn>
   </DataGrid.Columns>
</DataGrid>

C#代码为:

var ssid = new SSIDPropertyClass();

ssid._networkID = SSID.Count + 1;
ssid._ssid = EnteredSSIDAC;
ssid._vlan = VlanSSID;

if (ACSelectedSecurityType=="Static WEP")
{
    ssid._authenticationMode = ACSelectedSecurityType;
    ssid._authentication = ACStaticWEPSelectedAuthentication;

    ssid._staticWEPKeyType = ACStaticWEPSelectedKeyType;
    ssid._staticWEPKeyLength = ACStaticWEPSelectedKeyLength;

    ssid._staticWEPKey1 = StaticWEPKey1;
    ssid._staticWEPKey2 = StaticWEPKey2;
    ssid._staticWEPKey3 = StaticWEPKey3;
    ssid._staticWEPKey4 = StaticWEPKey4;

    SSID.Add(ssid);
}
else if(ACSelectedSecurityType=="WPA/WPA2 Personal")
{
    ssid._authenticationMode = ACSelectedSecurityType;
    ssid._wpaPersonalKeyAC = WpaACKey;

    SSID.Add(ssid);
}

我想要的是,如果执行块,则仅在块中添加该块列实际上,它总是显示多余的列,例如 else如果执行时,我只想显示那两个我已经在SSID集合中添加了它,但是它也显示了是否有阻塞列。因此,总而言之,我想使多余列的可见性变为false。有人可以解决我的问题,因为我明天需要提交它。任何帮助将不胜感激?

I want that when if block is executed than it adds only that block columns in datagrid and same case for other else if block.Actually it is always displaying extra columns which I don't need For eg when else if is executed I want to display only that two which I have added in SSID collection but it is displaying if block columns too.So in a nutshell I want to make visibility of extra columns to false.Can anyone solve my issue as I need to submit it tomorrow.Any help would be greatly appreciable?

推荐答案

如果要隐藏列,则需要指定属性 可见性 这样,

If you want to hide the Column, you need to specify the Property Visibility like this,

YourDataGrid.Columns[IndexOftheColumn].Visibility = Visibility.Collapsed;

如果要隐藏第一列,请说网络ID

If you want to Hide the first column say "Network ID"

dg.Columns[0].Visibility = Visibility.Collapsed;

这篇关于如何使用MVVM在WPF中自动隐藏DataGrid列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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