Domanda casella di controllo selezionata da wpf
-
06-07-2019 - |
Domanda
Sto creando una casella di riepilogo selezionata con il seguente modello:
<Style x:Key="CheckBoxListStyle" TargetType="{x:Type ListBox}">
<Setter Property="SelectionMode" Value="Multiple"></Setter>
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type ListBoxItem}" >
<Setter Property="Margin" Value="2" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<CheckBox IsChecked="{Binding Path=xxxxxxxxxxx,RelativeSource={RelativeSource TemplatedParent},Mode=TwoWay}"> <ContentPresenter></ContentPresenter>
</CheckBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
</Style>
<ListBox Style="{StaticResource CheckBoxListStyle}" ItemsSource="{Binding Path=Configuration.ProductTypes}" DisplayMemberPath="ProductName" />
il mio problema è che sto ricevendo tutti i tipi di prodotto dal database e lo sto collegando alla fonte di voci della casella di riepilogo. ho una classe di prodotti che contiene un elenco di tipi di prodotti a cui appartiene. devo impostare la proprietà IsChecked delle caselle di controllo in base all'elenco dei tipi di prodotto del prodotto. In genere ho bisogno di impostare una o più caselle di controllo proprietà IsChecked. il prodotto può appartenere a 1 o più tipi di prodotto. e la modalità di selezione è multi-selezione. se l'utente seleziona le caselle di controllo del tipo di prodotto aggiuntivo .. devo ottenere le caselle di riepilogo selezionate e salvarle nel database ... questa è un'applicazione WVF MVVM ... qualsiasi idea su come risolvere questo scenario ... < br> nella controltemplate quale sarà il percorso IsChecked?
Grazie Rey
Vorrei semplicemente chiarire la mia domanda: ho bisogno di una casella di riepilogo con casella di controllo e blocco di testo. il contesto dei dati di textblock è diverso e il contesto dei dati della casella di controllo è diverso. Voglio dire, ottengono i loro dati da diversi oggetti. non ho idea di come raggiungere questo obiettivo ...
Soluzione
Vorrei semplicemente chiarire la mia domanda: ho bisogno di un casella di riepilogo con casella di controllo e blocco testo. Il contesto dei dati del blocco di testo è diverso e il contesto dei dati della casella di controllo è diverso. intendo che ottengono i loro dati da diversi oggetti. non ho idea di come raggiungere questo ...
Crea una nuova classe (un ViewModel) che contiene i due contesti di dati (Model1 e Model2) e i dati si legano ad esso, noto anche come modello MVVM.
Altri suggerimenti
La classe ProductType che stai vincolando a ListBox dovrebbe avere una proprietà di lettura / scrittura chiamata IsSelected o IsChecked a cui puoi associarti. Quindi invece di utilizzare un ControlTemplate, utilizzare un DataTemplate su ListBox.ItemTemplate e associare la proprietà IsChecked di CheckBox a quella proprietà.