my.ASPItalia.com
ASP.NET
|
HTML5
|
LINQ e Entity Framework
|
Silverlight
|
Windows Phone
|
.NET Framework
|
Libro WP7
|
Libro HTML5
|
Corso on-site HTML5
Iscriviti
Login
Newsletter
Home
Articoli
Script
Notizie
FORUM
Blogs
Lab
Media
Tutorials
Corsi
Libri
Tags
Tutti i forum
Ricerca
FAQ
Fai una domanda
xmldatasource
in
.NET Framework
>
Windows Presentation Foundation e WinForms
Ultimo messaggio
pierosbressa
il 25 agosto 2010 alle 14:33
2 messaggi
dal 25 agosto 2010
Buongiorno a tutti.
Finalmente dopo tanti anni di winform mi sono deciso di passare a wpf.
Con l'uscita di Visual Studio 2010 ho iniziato a studiare xaml da zero.
Dopo prove e prove ho deciso di fare la prima applicazione seria in wpf.
Ho deciso di farla subito difficile in modo da fare esperienza e imparare il più possibile.
Così ho creato un navigation pane e vorrei che ad ogli click di bottone in basso a sinistra, appaia un menù diverso in alto a sinistra.
Così ho studiato come fare la treeview. Ho visto che potrei tranquillamente fare ad ogni click di pulsante
Treeview1.Items.Clear()
TreeView1.Items.Add("ccc")
In pratica pulire tutto e aggiungere a runtime il menù corrispondente. Però questo è semplice e così non imparo nulla.
Allora ho studiato come associare il controllo TreeView a una sorgente xml e ho scoperto l'xmldatasource.
Ho creato quindi un file xml chiamato Menu1.xml e ci ho messo dentro questo:
<items>
<item text="Testo 1" value="1">
<item text="SubTesto 1" value="1-1" />
<item text="SubTesto 2" value="1-2" />
<item text="SubTesto 3" value="1-3" />
</item>
</items>
L'xaml è così:
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<XmlDataProvider x:Key="xmlData" Source="Menu1.xml" XPath="/items" />
<HierarchicalDataTemplate
x:Key="childTemplate"
ItemsSource="{Binding XPath=item}">
<TextBlock Text="{Binding XPath=@value}" />
</HierarchicalDataTemplate>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource xmlData},XPath=item}">
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<TreeView ItemsSource="{Binding}" ItemTemplate="{StaticResource childTemplate}"
Height="146" HorizontalAlignment="Left" Margin="187,17,0,0" Name="TreeView1" VerticalAlignment="Top" Width="281" >
</TreeView>
</Grid>
</Window>
A questo punto mi chiedo come sia possibile cambiare a runtime, "al volo" il nome del file xml ad ogni click del pulsante. In pratica cliccando su button1 deve caricare il file menu1.xml, cliccando su button2 deve caricare menu2.xml e così via.
Come cambiare a runtime la stringa <XmlDataProvider x:Key="xmlData" Source="Menu1.xml" XPath="/items" />
in modo che diventi <XmlDataProvider x:Key="xmlData" Source="Menu2.xml" XPath="/items" /> ?
Spero di essere stato chiaro nella spiegazione. Linguaggio usato: VB.NET
Ringrazio in anticipo e buona giornata.
Piero.
Rispondi
Quoting
Ricciolo
il 25 agosto 2010 alle 20:14
5.511 messaggi
dal 26 febbraio 2001
Contributi
blogs.aspitalia.com
|
Blog
Invece di usare una sorgente XML, che può essere comoda in certe situazioni, ma non in questa, usa una tua collezione di dati, che puoi mantenere lato codebehind.
Questa collezione deve essere di tipo ObservableCollection e puoi impostare ItemsSource sul treeview in diversi modi: datacontext, assegnazione dal codebehind.
Guarda qua
http://www.winfxitalia.com/script/25/Creare-Collezioni-Utizzabili-Binding-WPF.aspx
http://www.winfxitalia.com/articoli/presentation-foundation/wpf-binding-template-1.aspx
http://www.winfxitalia.com/articoli/presentation-foundation/wpf-binding-template-2.aspx
e se vuoi approcciare un'architettura più corretta, guarda qua:
http://www.winfxitalia.com/articoli/presentation-foundation/architettura-model-view-viewmodel-wpf.aspx
Ciao
Il mio blog
Homepage
Rispondi
Quoting
Salto rapido
Ultimi messaggi
Tutti i forum
Ricerca
Utenti online
ASP.NET
ASP.NET 2.0
ASP.NET 3.5
ASP.NET 4.0
.NET Framework
Silverlight
Windows Phone
Windows Presentation Foundation e WinForms
Windows Communication e Workflow
ASP - avanzato
ASP - base
SQL Server e MySQL
Libri
Hosting
Altri linguaggi e tecnologie
Windows Server, IIS & Security
E-commerce
OT
Commenti: blogs e notizie
Eventi
Torna al forum
| Feed
RSS
ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano
Speciale Silverlight 5: tutte le novità
Rilasciato il bollettino MS11-100 per risolvere i problemi di attacchi DoS di ASP.NET
Speciale Razor: il nuovo view engine di WebMatrix e ASP.NET MVC
I più letti di oggi
Microsoft WebCamp - Roma, Milano
Real Code Day 6 - Firenze
Gestire il supporto all'intellisense JavaScript in Visual Studio 2010
Windows Phone 7.5 Developer Day with Nokia and Microsoft - Roma, Milano
Mono 0.18 con un mod_mono per Apache
Ricavare il valore massimo di una colonna in un database
Media
Windows Phone 7.5 Developer Day: marketplace e strumenti per monetizzare le app
Windows Phone 7.5 Developer Day: costruire app con Visual Studio 2010 e Windows Phone Runtime
Tutti i media
In evidenza
Speciale Silverlight 5: tutte le novità
Community Days 2012 - Milano
Sviluppare applicazioni per Windows Phone: scopri come fare con il nostro nuovissimo libro!
Sviluppa le applicazioni del futuro oggi: impara con il nostro libro HTML5 Espresso!
Style predefiniti in Silverlight
SkyDrive API: video slide show basato sul .NET Framework
Animare la rotazione di un'immagine dentro un canvas in HTML5
Migliorare le prestazioni sul caricamento delle immagini in Windows Phone 7.1
MISC
I nostri autori
Collabora con noi!
Media Kit - Pubblicità sul nostro network