Entwickler-Ecke

WPF / Silverlight - Zeilen aus DataGrid ausblenden wenn CheckBoxColumn aktiviert


DSCH5230 - Di 15.08.17 10:39
Titel: Zeilen aus DataGrid ausblenden wenn CheckBoxColumn aktiviert
Hallo Entwickler-Ecke,

such seit einiger Zeit nach einer Lösung für mein Problem. Und zwar habe ein DataGrid die an Access Datenbank angebunden ist mit einer Checkbox. Ich möchte die Zeile ausblenden in der die DataGridCheckBoxColumn aktiviert ist. Kann einer Helfen?

Bitte in c#. Danke

Hier ist mein XAML:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
 <Window.Resources>
        <local:InfobuchDataSet x:Key="infobuchDataSet"/>
        <CollectionViewSource x:Key="cPInfosViewSource" Source="{Binding CPInfos, Source={StaticResource infobuchDataSet}}"/>
    </Window.Resources>
    <Grid DataContext="{StaticResource cPInfosViewSource}">
        <DataGrid x:Name="cPInfosDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding }" Margin="10,433,10,10" RowDetailsVisibilityMode="VisibleWhenSelected" SelectionChanged="cPInfosDataGrid_SelectionChanged">            
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="iD_CPInfoColumn" Binding="{Binding ID_CPInfo}" Header="ID CPInfo" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="element_CPColumn" Binding="{Binding Element_CP}" Header="Element CP" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="elementstandort_CPColumn" Binding="{Binding Elementstandort_CP}" Header="Elementstandort CP" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="cMC_CPColumn" Binding="{Binding CMC_CP}" Header="CMC CP" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="melder_CPColumn" Binding="{Binding Melder_CP}" Header="Melder CP" Width="SizeToHeader"/>
                <DataGridTemplateColumn x:Name="eingetragen_amCPColumn" Header="Eingetragen am CP" Width="SizeToHeader">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <DatePicker SelectedDate="{Binding Eingetragen_amCP, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn x:Name="info1_CPColumn" Binding="{Binding Info1_CP}" Header="Info 1 CP" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="info2_CPColumn" Binding="{Binding Info2_CP}" Header="Info 2 CP" Width="SizeToHeader"/>
                <DataGridCheckBoxColumn x:Name="erledigt_CPColumn" Binding="{Binding Erledigt_CP, Mode=TwoWay}"  Header="Erledigt CP" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="erledigt_amCPColumn" Binding="{Binding Erledigt_amCP}" Header="Erledigt am CP" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="erledigt_durchCPColumn" Binding="{Binding Erledigt_durchCP}" Header="Erledigt durch CP" Width="SizeToHeader"/>

                <!--Binding="{Binding Erledigt_CP }" -->
            </DataGrid.Columns>

Über Lösungen würde ich mich freuen.

Moderiert von user profile iconTh69: XML-Tags hinzugefügt
Moderiert von user profile iconTh69: Titel (leicht) geändert.


Th69 - Di 15.08.17 11:17

Hallo und :welcome:

du kannst das mit einem DataTrigger erreichen, s. die beiden ersten Antworten in WPF hide row in datagrid based on condition [https://stackoverflow.com/questions/19320528/wpf-hide-row-in-datagrid-based-on-condition].


DSCH5230 - Di 15.08.17 22:35

Hallo,

habe es ausprobiert nur leider funktioniert es nicht. Leider bekomme ich folgende Fehlermeldungen angezeigt wie auf den Bildern zu sehen sind.

Gruß


Th69 - Mi 16.08.17 10:05

Die Fehlermeldung ist doch eindeutig. In der Klasse mußt du noch die IValueConverter.ConvertBack-Methode [https://msdn.microsoft.com/de-de/library/system.windows.data.ivalueconverter.convertback(v=vs.110).aspx] implementieren (diese kannst du dann ersteinmal ohne Logik lassen, also nur return null) - diese Methode dient der Rückwärtskonvertierung.