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
Hallo echdeneth
Ich verstehe deine Frage nicht.
Eventuell könntest du dein Binding auf SelectedItem noch mit UpdateSourceTrigger=PropertyChanged ausstattest.
Gruss
Alf
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 PropertyChanged
ausgelö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 bool
Wert 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.