Laden...

Profil von Sascha87

myCSharp.de - Member Mitglied seit
S
Sascha87
myCSharp.de - Member
7
Themen
48
Beiträge
Dabei seit
25.04.2021
Letzte Aktivität
vor 4 Jahren
Erstellt vor 4 Jahren

Warum machst Du das denn nicht im ViewModel?
Einfach die Liste mit den Rechten auf CanAddFPFoer filtern und einer zweiten Property zuweisen - oder direkt die erste Liste gefiltert anbieten.
Und wenn es immer nur ein Recht geben kann, suchst Du halt das eine Recht raus.
Dann brauchst Du den ganzen Kram nicht.

Ich bin absoluter Anfänger und verstehe den Ansatz nicht. Daher versuche ich mit Lösungen zurecht zu kommen, die es im Internet gibt.

Deinen Tipp werde ich versuchen, vielen lieben Dank!

Erstellt vor 4 Jahren

Das Anzeigen und Nicht-Anzeigen des Buttons habe ich hinbekommen.
Ich habe einfach eine Liste um den Button erstellt. Dort konnte ich ItemsSource und SelectedItem anwenden. Jetzt kann ich nur nicht mehr auf den Command des Buttons zugreifen.

Dem Binding habe ich ein "RelativeSource" hinzugefügt. Die eigentliche Bindung zum Command funktioniert. Allerdings führt er nichts aus.


<UserControl.DataContext>
        <vm:ViewModel></vm:ViewModel>
    </UserControl.DataContext>


<ListBox ItemsSource="{Binding Rechte, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding ProRechte, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" FontSize="{Binding SelectedFont, UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Background="WhiteSmoke">
                                        <ListBox.ItemContainerStyle>
                                            <Style TargetType="ListBoxItem">
                                                <Setter Property="Visibility" Value="{Binding CanAddFPFoer, Converter={StaticResource BoolToVis}}" />
                                            </Style>
                                        </ListBox.ItemContainerStyle>
                                        <ListBox.ItemTemplate>
                                            <DataTemplate>
                                                <StackPanel Orientation="Horizontal">
                                                    <Button Content="Eintragen" Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type vm:ViewModel}}, Path=FoerderEintragen}" Padding="5 5 5 5" Margin="5 15 5 0" />
                                                </StackPanel>
                                            </DataTemplate>
                                        </ListBox.ItemTemplate>
                                    </ListBox>


Als Bindungsfehler taucht folgendes aus: > Fehlermeldung:

Quelle nicht gefunden: RelativeResource FindAncestor, AncestorType="ViewModel", AncestorLevel="1"

Hätte jemand einen heißen Tipp für mich?
Vielen lieben Dank und einen guten Start in den Tag!
Grüße
Sascha

Erstellt vor 4 Jahren

Das war der entscheidende Hinweis!

Vielen lieben Dank!

Grüße
Sascha

Erstellt vor 4 Jahren

Das habe ich bisher noch nicht benötigt. Wie gebe ich dem denn Rechte?

Erstellt vor 4 Jahren

Im getter steht er anscheinend auf Null....

Erstellt vor 4 Jahren

Ok, ich glaube, ich bin ein Schritt weiter.

Ich habe jetzt die folgende Property erstellt:


Recht _rechte;
        public Recht ProRechte
        {
            get
            {
                return _rechte;
            }
            set
            {
                if (value == null)
                    return;
                OnPropertyChanged(ref _rechte, value);
            }
        }

Im xaml Code kann ich auf den Wert zugreifen:


<Button Content="Löschen" Command="{Binding FoerderLoeschen}" FontSize="{Binding SelectedFont, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding ProRechte.CanDelFPFoer, Converter={StaticResource BoolToVis}}" Padding="5 5 5 5" Margin="5 15 5 0"/>

Nur gibt er mir keinen Wert aus?
Was ich vorhabe: Ich habe in der Datenbank eine 1 oder NULL gespeichert.
Ich lese die Werte als Nullable Bool aus und gebe sie als Liste weiter.

Ich möchte die Buttons anzeigen oder verstecken, je nach Wert. Dazu gibt es den BooleanToVisibilityConverter.

Allerdings wandelt er es nicht um bzw. ich vermute, dass ich meinen Wert nicht bekomme. Kann ich irgendwie überprüfen, ob true oder false ankommt?

Vielen lieben Dank!

Erstellt vor 4 Jahren

Hättest du eventuell einen Tipp wie ich innerhalb einer Property nur auf ein Element der Klasse zugreife?

EDIT: Hat sich erledigt.

Erstellt vor 4 Jahren

Guten Morgen zusammen,
ich möchte ein ItemsSource an ein Button Binden. Der Grund ist, ich benötige Unterwerte einer Klasse.

Bei einer ListBox kann ich "Rechte" als ItemsSource Binden und in den ListBox.ItemTemplates kann ich tiefer darauf zugreifen (Rechte.HatRechte).

Leider geht es bei den Buttons nicht. Dort kann ich nur "Rechte" Binden. Nach ein wenig googln kam ich auf die Funktion "ItemsControl".


<ItemsControl ItemsSource="{Binding Rechte}" >
                                            <ItemsControl.ItemTemplate>
                                                <DataTemplate>
                                                    <StackPanel>
                                                        <Button Content="Löschen" Command="{Binding FoerderLoeschen}" FontSize="{Binding SelectedFont, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding Rechte.CanDelFPFoer, Converter={StaticResource BoolToVis}}" Padding="5 5 5 5" Margin="5 15 5 0"/>
                                                    </StackPanel>
                                                </DataTemplate>
                                            </ItemsControl.ItemTemplate>
                                        </ItemsControl>

Soweit kann ich "Rechte" Binden und in dem Button auf "Rechte.CanDelFPFoer" zugreifen. Mein Problem ist, ich bekomme für jeden Unterwert einen Button ausgegeben. Sprich statt 1 Button bekomme ich in dem Fall 30. Wie kann ich das auf 1 Button begrenzen? Gibt es eine Alternative zu ItemsControl? Gehe ich die Sache komplett falsch an?

Vielen lieben Dank und Grüße
Sascha

Erstellt vor 4 Jahren

Gut, dann anders.

Wenn ich die Methode von Th69 richtig verstehe, wird nur der Wert an die URL gehängt, der auch gefüllt ist, richtig?

Ich bekomme auf der anderen Seite dann Schwierigkeiten. Das Script auf dem Server erwartet genau die URL.
Woher soll das Script denn wissen, wenn die Werte in einer ganz anderen Reihenfolge versendet werden?

Erstellt vor 4 Jahren

Gibt es die Möglichkeit, wenn ich keinen Wert habe, dass dann "-" gesetzt wird?

Auch, wenn es nicht der Ansicht von Abt entspricht, finde ich den Weg ganz gut. So hätte ich keine leeren Felder in der DB und beim auslesen habe ich direkt ein Zeichen in der Liste, das zeigt, dass dort keine Werte vorhanden sind und ergänzt werden müssen.
Denn genau das Zeichen setze ich so oder so als


TargetNullValue=-