Laden...

XAML MVVM Selecteditem mit wiederholtem Klick benötigt

Erstellt von echdeneth vor einem Jahr Letzter Beitrag vor einem Jahr 523 Views
echdeneth Themenstarter:in
161 Beiträge seit 2019
vor einem Jahr
XAML MVVM Selecteditem mit wiederholtem Klick benötigt

Moin, nachfolgende

ListBox

soll auch bei wiederholtem Klick auf dasselbe Item die Daten an

SelectedVerpackungPreset

übergeben.

Welches Control würdet ihr empfehlen?


<ListBox
    Width="800"
    HorizontalAlignment="Center"
    FontSize="30"
    ItemsSource="{Binding Verpackungen, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
    SelectedItem="{Binding SelectedVerpackungPreset}"
    SelectedValuePath="Verpackung">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Label Content="{Binding Verpackung}" Style="{StaticResource MaterialDesignLabel}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
<ListBox
    Width="800"
    HorizontalAlignment="Center"
    FontSize="30"
    ItemsSource="{Binding Verpackungen, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
    SelectedItem="{Binding SelectedVerpackungPreset}"
    SelectedValuePath="Verpackung">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Label Content="{Binding Verpackung}" Style="{StaticResource MaterialDesignLabel}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>


Die betreffende Eigenschaft:


        public VerpackungPresetClass? SelectedVerpackungPreset
        {
            get => selectedVerpackungPreset; set
            {
                selectedVerpackungPreset = value;

                if (string.IsNullOrEmpty(selectedVerpackungPreset.Verpackung)) return;

                VerpackungVisibility = Visibility.Collapsed;
                NewItem = selectedVerpackungPreset;
                NotifyPropertyChanged();
            }
        }

Danke im Vorraus

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

A
764 Beiträge seit 2007
vor einem Jahr

Hallo echdeneth

Ich verstehe deine Frage nicht.

Eventuell könntest du dein Binding auf SelectedItem noch mit UpdateSourceTrigger=PropertyChanged ausstattest.

Gruss
Alf

126 Beiträge seit 2023
vor einem Jahr

Erklär doch bitte mal warum du diese wiederholende Zuweisung benötigst.

Auch der Setter der Eigenschaft ist eher suboptimal. So kann es passieren, das trotz Änderung des Eigenschaftswertes kein PropertyChangedausgelöst wird.

Als weiteren Kritikpunkt hätte ich das mit der Verwendung des UI-Typen Visibility im ViewModel. Der hat da nichts zu suchen. Wenn es nur zwei Zustände gibt, dann nimm einen bool Wert dafür und in der View setzt du diesen boolWert in das um, was dort am besten ist. Im ViewModel sollte man keinen Gedanken daran verschwenden, wie man etwas darstellt, nur was man darstellen möchte.

Zum Setter gäbe es noch mehr zu sagen, aber das führt zu weit und erledigt sich evtl. wenn du uns erklärst, was du da erreichen möchtest.

Hat die Blume einen Knick, war der Schmetterling zu dick.