c# - 如何使用 MVVM 自动隐藏 WPF 中的 DataGrid 列?

标签 c# wpf xaml mvvm datagrid

<分区>

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

<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);
}

我希望当执行 if block 时,它只在数据网格中添加该 block 列,而在其他 else if block 中添加相同的情况。实际上它总是显示我不需要的额外列例如,当 else if 被执行我只想显示我在 SSID 集合中添加的那两个,但它也显示是否 block 列。所以简而言之,我想将额外列的可见性设置为 false。任何人都可以解决我的问题我需要明天提交。任何帮助都将不胜感激?

最佳答案

如果要隐藏Column,需要指定Property Visibility像这样,

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

如果你想隐藏第一列说“网络ID”

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

关于c# - 如何使用 MVVM 自动隐藏 WPF 中的 DataGrid 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24778677/

相关文章:

c# - NetworkStream 获取 System.IO.IOException : Unable to write data to the transport connection

c# - 在 .NET 3.5 中使用反射生成子类列表

c# - WPF中GUI的定时刷新

silverlight - 如何在Silverlight TextBox中表示换行或换行

wpf - Popup 的 IsOpen 和 Visibility 属性之间的区别?

c# - 如何将源类型 'System.Nullable<bool>' 转换为目标类型 'bool'

c# - 使用存储库和映射、C# 实现 MVC 设计模式

c# - DataTable 内部结构和多线程使用

wpf - 使用代理的 Image.Source

wpf - 是什么导致 VS 2010 SP1 WPF 设计器崩溃?