2014-07-16 4 views
15

(कोई कोड-पीछे), मैं चयन पर मेरी डेटा ग्रिड स्तंभों को छिपाना चाहते हैं, मैं कोड निम्नलिखित है MVVM का उपयोग करना:स्वचालित रूप से एमवीवीएम का उपयोग कर डब्ल्यूपीएफ में डेटाग्रिड कॉलम को कैसे छिपाना है?

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

मैं चाहता हूँ कि जब अगर ब्लॉक इसे टाटाग्रिड में केवल ब्लॉक कॉलम और ब्लॉक के अलावा अन्य मामले के लिए उसी मामले में जोड़ा जाता है। असल में यह हमेशा अतिरिक्त कॉलम प्रदर्शित करता है जिनकी मुझे आवश्यकता नहीं होती है उदाहरण के लिए जब else if निष्पादित किया जाता है, तो मैं केवल उन दो को प्रदर्शित करना चाहता हूं जिन्हें मैंने जोड़ा है एसएसआईडी संग्रह में लेकिन यह ब्लॉक कॉलम भी प्रदर्शित कर रहा है। तो संक्षेप में मैं visibilit बनाना चाहता हूँ वाई को अतिरिक्त कॉलम के झूठ बोलने के लिए। क्या कोई मेरी समस्या हल कर सकता है क्योंकि मुझे कल इसे जमा करने की ज़रूरत है। किसी भी मदद की सराहना की जाएगी?

+1

इस जवाब देखें: http://stackoverflow.com/questions/7955318/bind-datagridtemplatecolumn-visibility –

उत्तर

22

आप स्तंभ छुपाना चाहते हैं, तो आप Visibility इस तरह संपत्ति निर्दिष्ट करने के लिए,

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

जरूरत है आप पहले कॉलम कहते हैं कि "नेटवर्क आईडी"

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

मैं मैं सीधे रूप में मेरे डीजी उपयोग नहीं कर सकते, क्योंकि मैं MVVM मॉडल का उपयोग कर रहा विकल्प के पीछे एक कोड की जरूरत नहीं है तुमने ऊपर कहा! – Sapper

+2

@ सैपर आपको अपने प्रश्न में यह स्पष्ट करना चाहिए कि आप एमवीवीएम का उपयोग कर रहे हैं। –

2

के लिए छिपाने के लिए चाहते हैं जो लोग XAML

में इसे छिपाने की तलाश में हैं, यह ऐसा कुछ दिखाई देगा:

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

[डब्ल्यूपीएफ में डेटाग्रिड कॉलम के लिए बाध्यकारी दृश्यता] (http://stackoverflow.com/a/22074985/1474994) – reasra

+0

@reasra Hi Reasra, क्या आप इस लिंक को पोस्ट करने के बारे में विस्तृत करना चाहते हैं? धन्यवाद। –

+1

मैं कुछ दिनों के लिए 'DataGridTextColumn' पर दृश्यता के साथ लड़ रहा था, और यह केवल दृश्यता सेट करने के समान आसान नहीं है। जिन कारणों से मैं पूरी तरह से समझ नहीं पा रहा हूं, लेकिन लिंक किए गए उत्तर में समझाया गया है, कॉलम मूल्यों को बाध्य करते समय डेटाग्रिड को "दृष्टि से कनेक्ट" नहीं किया जाता है। जवाबों की तलाश करते समय मैंने इस पोस्ट पर ठोकर खाई, मैं बस विस्तार करना चाहता था क्योंकि मैं किसी भी कारण से नहीं सोच सकता था कि कोई एक स्थिर मूल्य पर दृश्यता निर्धारित करेगा (इसके बावजूद यह काम कर सकता है)। – reasra

1

आपको कॉलम छिपाने की ज़रूरत नहीं है, बस अपनी मैक्सविड्थ संपत्ति को ज़ीरो पर सेट करें और यह दिखाई नहीं देगा।

 DataGrid.Columns[IndexOfColumn].MaxWidth = 0; 
संबंधित मुद्दे