Sì, Caliburn.Micro
funziona bene con i controlli utente. È un framework elaborato, ma non al punto da costringerti a seguire un particolare percorso di sviluppo. Come suggeriscono le risposte alle domande collegate, puoi sempre utilizzare il vecchio binding WPF se hai problemi particolari.
In effetti, non permetterei a quei due collegamenti di scoraggiarvi, il primo è descrivere un modo per legare proprietà separate a un singolo controllo utente e la soluzione è valida. Una soluzione migliore sarebbe probabilmente quella di utilizzare un ItemsControl
con un numero personalizzato DataTemplate
e quindi creare una raccolta di DTO sul suo modello di vista che contiene i nomi e i valori delle proprietà.
Il secondo collegamento indica come creare una vista (UserControl
) e creare un'istanza della vista in XAML e si desidera associarlo a un modello di vista, quindi si chiama prima la vista e si deve dire Caliburn.Micro dove il modello di vista è quello di legarsi a:
<UserControl ...
cal:Bind.Model="EasyPlayer.MediaControl.NowPlayingViewModel" />
Quindi, questo concettualmente può essere pensato come un ViewModel/vista, piuttosto che un UserControl con proprietà di dipendenza, ecc
In realtà, si Scoprirai che quando usi Caliburn.Micro, probabilmente utilizzerai sempre meno UserControl
s per eseguire la composizione della vista. Questo perché è molto facile creare parti dell'interfaccia utente riutilizzabili usando i modelli di vista, le viste e il primo approccio del modello di vista.
Quando si ha una ContentControl
in una vista con lo stesso nome di una proprietà vista del modello sulla vista del modello genitore, quindi Caliburn.Micro localizzerà la vista del modello vista corrispondente, iniettarlo nel ContentControl
, e fasciare il modello vista/vista.
Ad esempio:
public class MyParentViewModel : Screen
{
public MenuViewModel MenuViewModel { get; set; }
public DetailsViewModel DetailsViewModel { get; set; }
public MyParentViewModel()
{
this.MenuViewModel = new MenuViewModel();
this.DetailsViewModel = new DetailsViewModel();
}
}
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".2*" />
<ColumnDefinition Width=".8*" />
</Grid.ColumnDefinitions>
<ContentControl Grid.Column="0" x:Name="MenuViewModel" />
<ContentControl Grid.Column="1" x:Name="DetailsViewModel" />
</Grid>
partendo con Caliburn e appena arrivato attraverso il vostro molto utile post - ... potrebbe espandere un po 'ora usando usercontrols tanto ... afaics vista sta per essere un usercontrol non è vero? thxvm –
Sì, con Caliburn.Micro non userete i controlli utente nel senso di controlli utente con proprietà di dipendenza, istanziando i controlli direttamente da un altro controllo/finestra utente ecc. – devdigital
ok ... ma continuerete a casa, per esempio , una griglia in un usercontrol (con tutto il comportamento personalizzato in viewmodel/xaml) e caricarlo dinamicamente in un ContentControl tramite Caliburn.Micro? (Voglio solo controllare che non manchi qualcosa). Grazie ancora. –