Как скрыть столбец DataGrid в WPF автоматически с помощью MVVM?

Используя 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>

Код С#:

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

Я хочу, чтобы, если блок выполняется, чем добавляет только столбцы блоков в datagrid и тот же регистр для других, если блок. Фактически он всегда отображает дополнительные столбцы, которые мне не нужны. Например, когда else if выполняется, я хочу отобразить только те два, которые я добавил в SSID-коллекции, но они отображаются, если столбцы блоков тоже. Итак, я хочу сделать видимость дополнительных столбцов ложными. Может кто-нибудь решить мою проблему, поскольку мне нужно отправить ее завтра. Любая помощь быть очень заметным?

Ответы

Ответ 1

Если вы хотите скрыть столбец, вам нужно указать Property Visibility как это,

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

Если вы хотите скрыть первый столбец, скажите "Network ID"

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

Ответ 2

Для тех, кто хочет скрыть это в XAML

это выглядело бы примерно так:

<DataGridTextColumn Visibility="Collapsed" Header="Merchant Reference" Binding="{Binding MerchantReference}"                                    Width="200" />

Ответ 3

Вам не нужно скрывать столбец, просто установите его свойство MaxWidth равным нулю, и оно не появится.

        DataGrid.Columns[IndexOfColumn].MaxWidth = 0;