Diese Seite drucken
%PM, %15. %669 %2013 %15:%Apr

WPF Datagrid Spalten ein- und ausblenden

geschrieben von
Artikel bewerten
(0 Stimmen)
Leider besteht im WPF Datagrid keine Möglichkeit direkt auf Spalten zuzugreifen. Man kann natürlich durch die Eigenschaft "AutoGenerateColumns=True" und dem Ereignis "AutoGeneratingColumn" des Grid im Code Spalten anzeigen oder auch nicht. Was aber wenn man das ganze dynamisch gestalten will, am besten noch mit direkter Datenbindung und/oder seine Columns im Xaml definieren will? -> Fehlanzeige, da der Datacontext des Grids z.B. nicht an die DataGridTemplateColumn durchgereicht wird. Warum weiss der Geier. Abhilfe schafft folgendes Szenario von Thomas Levesque Leicht abgeändert und nach VB konvertiert. Zuerst braucht man einen Converter der boolsche Werte nach Visibility convertiert:

Public Class VisibilityConverter
Implements IValueConverter

Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
Try
If value Is Nothing OrElse CBool(value) = False Then Return Visibility.Collapsed

Return Visibility.Visible

Catch ex As Exception
Return Visibility.Collapsed
End Try

end class

End Function
dann eine Klasse die Freezable erbt und eine DependencyProperty "Data" bereitstellt.

Public Class BindingProxy
Inherits Freezable
'Freezable überschreiben
Protected Overrides Function CreateInstanceCore() As Freezable
Return New BindingProxy()
End Function

'Diesen Namen (Data) in der dataProperty und im XAML verwenden
Public Property Data() As Object
Get
Return DirectCast(GetValue(DataProperty), Object)
End Get
Set(value As Object)
SetValue(DataProperty, value)
End Set
End Property

'DependencyProperty für die "Data"
Public Shared ReadOnly DataProperty As DependencyProperty = DependencyProperty.Register("Data", GetType(Object), GetType(BindingProxy), New UIPropertyMetadata(Nothing))
End Class


In den PageResources bzw. Datagridresources diese beiden Klassen referenzieren:











dann die proxy klasse des Grids bestücken. Ich mach das via code


Dim p As BindingProxy = CType(grdElementeBearbeitung.Resources("proxy"), BindingProxy)
p.Data = CType(grdBereiche.SelectedItem, text_bereich)


und die Visiblity der Spalte an die Data Property bzw. das Feld binden


Visibility="{Binding Data.spalte_anzeigen,Converter={StaticResource VisibilityConverter},Source={StaticResource proxy}}"

		
Gelesen 54702 mal Letzte Änderung am %PM, %24. %643 %2015 %14:%Jun

150 Kommentare

  • Kommentar-Link viagra brands %AM, %08. %329 %2022 %06:%Jan gepostet von viagra brands

    ordering viagra using viagra buy cialis online australia paypal where can i buy viagra for women

  • Kommentar-Link Hro2warditata %PM, %04. %888 %2022 %20:%Jan gepostet von Hro2warditata

    накрутка Twitch

  • Kommentar-Link stromectol uk buy %PM, %03. %620 %2022 %13:%Jan gepostet von stromectol uk buy

    interacciones cialis cialis sin receta medica en farmacia que es cialis 10 mg como comprar cialis sin receta

  • Kommentar-Link viagra shop %PM, %02. %947 %2022 %21:%Jan gepostet von viagra shop

    achat cialis internet cialis 2.5 acheter cialis original en ligne sans ordonnance combien coute cialis 5mg

  • Kommentar-Link generic cialis cost %PM, %31. %595 %2021 %13:%Dez gepostet von generic cialis cost

    cialis y antidepresivos cialis madrid entrega en mano cialis de cuantos miligramos hay viagra vs cialis cual es mejor

  • Kommentar-Link Hr30owardHadly %AM, %31. %181 %2021 %03:%Dez gepostet von Hr30owardHadly

    Gorod.top

  • Kommentar-Link buy stromectol %AM, %30. %098 %2021 %01:%Dez gepostet von buy stromectol

    natural female viagra viagra cost per pill can you take too much cialis how can i get viagra

  • Kommentar-Link cheap generic viagra %AM, %29. %235 %2021 %04:%Dez gepostet von cheap generic viagra

    cialis tablets 20mg how many years can you take cialis? how long does cialis work where can you buy kamagra for females in the cockburn area

  • Kommentar-Link cialis usa vs indian %PM, %25. %710 %2021 %16:%Dez gepostet von cialis usa vs indian

    cialis 5mg generique cialis 10mg prix en pharmacie en france acheter cialis en ligne france ou acheter du cialis en ligne

  • Kommentar-Link cialis con receta %PM, %22. %914 %2021 %20:%Dez gepostet von cialis con receta

    buy plaquenil uk hydroxychloroquine 1mg is gastrointestinal problems common from plaquenil how effective is plaquenil for rheumatoid arthritis?