Domanda Dividere l'interfaccia WPF su più file Xaml


Sto cercando di creare un'interfaccia utente usando XAML. Tuttavia, il file sta diventando rapidamente molto grande e difficile da utilizzare. Qual è il modo migliore per dividerlo su più file.

Mi piacerebbe essere in grado di impostare il contenuto di un elemento come un ComboBox in un elemento definito in un file xaml diverso (ma nello stesso progetto VS).

Grazie


42
2017-10-22 07:38


origine


risposte:


È possibile dividere un'interfaccia utente di grandi dimensioni definendo UserControls.

Fare clic con il tasto destro del mouse sull'albero della soluzione, selezionare Aggiungi-> Nuovo elemento ... quindi Controllo utente. Puoi progettarlo nel modo normale.

Puoi quindi fare riferimento al tuo usercontrol in XAML utilizzando una dichiarazione dello spazio dei nomi. Diciamo che vuoi includere il tuo UserControl in una finestra. Nell'esempio seguente ho aggiunto un UserControl denominato "Foo" allo spazio dei nomi "YourCompany.Controls":

<Window x:Class="YourCompany.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Controls="clr-namespace:YourCompany.Controls">

  <Controls:Foo ... />

Per il tuo esempio specifico, utilizzerai il tuo usercontrol in una casella combinata definendo un DataTemplate che visualizza i dati all'interno del tuo usercontrol.


34
2017-10-22 08:10



È possibile suddividere i file XAML usando a ResourceDictionary. Il ResourceDictionary può essere utilizzato per unire altri file:

<Page.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="myresourcedictionary.xaml"/>
      <ResourceDictionary Source="myresourcedictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Page.Resources>

In ResourceDictionary è anche possibile dichiarare stili che è possibile utilizzare nei propri elementi, in modo che il file XAML principale si riduca.

Un'altra possibilità di ottenere un file XAML più piccolo consiste nel definire i propri controlli che verranno quindi utilizzati nell'app principale.


22
2017-10-22 08:06



Puoi anche creare un Pagina, invece di a UserControl. UN Page può essere ospitato dal Window o da a Telaio. Cerca i pro e i contro di una pagina vs UserControl. Dipende un po 'dalle tue esigenze rispetto alla navigazione che si adatta meglio alle tue esigenze.

Ecco un esempio di utilizzo di una pagina in una cornice.


1
2017-10-17 06:11



Usa stili e controlli utente. Dividi la tua interfaccia su parti più piccole e codificale in un altro file xaml. Esempio:

<Window>
<VeryBigControl>
<VeryBigControl.Style>
... <!--very long style-->
</VeryBigControl.Style>
.. <!--content of very big control-->
</VeryBigControl
</Window>
 

dividerlo in tre file xaml:
Window.xaml: questa sarà Window
VeryBigControl.xaml - questo sarà UserControl
VeryBigControlStyle.xaml - questo sarà il dizionario delle risorse
e così via :)


-2
2017-10-22 08:07