13 messaggi dal 04 gennaio 2007
Io ho un'applicazione WPF con un menu
<Menu>
<MenuItem Header="_New">
<MenuItem Header="_One" />
<MenuItem Header="_Two" />
</MenuItem>


E ottengo
New
One
Two
e premendo il tasto ALT si "illuminano" le lettere relative all'underscore... e fino a qui tutto ok.

Vorrei applicare la localizzazione e per fare ciò recupero da un file XML UTf-16 i valori del testo da applicare.

In questo caso (prendiamo ad esempio il valore "_one") compare "_one" con l'underscore esplicito.

_New
_One
_Two


Ecco come effettuo le operazioni di binding

Nel file app.xaml ho inserito la risorsa
<Application.Resources>
<XmlDataProvider x:Key="LanguagesList" Source="./Resources/UILanguages.xml" />
</Application.Resources>


Sullo startup dell'app.xaml carico la risorsa

string lang = "English";
XmlDataProvider xmldata = (XmlDataProvider)Application.Current.TryFindResource("LanguagesList");
xmldata.XPath = "/Languages/Language[@lang='" + lang + "']";




Poi vado nel singolo menuitem e effettuo il binding

<MenuItem Header="{Binding Source={StaticResource LanguagesList},
XPath=String[@id\=\'2\']}" />


Ecco un stralcio del mio XML

<?xml version="1.0" encoding="utf-16" ?>
<Languages>
<Language lang="Italiano" Culture="it-IT" FlowDirection="LeftToRight">
<String id="2">_Nuovo</String>
</Language>
<Language lang="English" Culture="en-UK" FlowDirection="LeftToRight">
<String id="2">_New</String>
</Language>
<Languages>


Perchè non riesco a vedere l'hotkey?

Grazie
Quando imposti la proprietà Header con una stringa, lo style associato a MenuItem usa il ContentPresenter con RecognizeAccessKey a true. Questo significa che se incontra una stringa, lui applica automaticamente un template che fa uso di AccessText per rappresentare appunto un testo accessibile (in WPF infatti è l'oggetto da utilizzare per fare queste cose).
Questo processo non avviene se però usi un Binding perciò devi ricorrere manualmente a creare l'accessText che riconoscerà la stringa:
<MenuItem>
<MenuItem.Header>
<HeaderText Text="{Binding Source={StaticResource LanguagesList}, 
XPath=String[@id\=\'2\']}" /> 
</MenuItem.Header>

Ciao

Il mio blog
Homepage
13 messaggi dal 04 gennaio 2007
Grazie mille. Provo subito.

Tanto che ci sono, ne approfitto e nel caso di un bottone?

Dov'è testo da impostare?

<Button>
<Button.Contest>
????
</Button.Contest>
</Button>

Scusa la domanda stupida.... ma non riesco a trovarla
13 messaggi dal 04 gennaio 2007
Nemmeno la proprietà HeaderText...

Buono il mio livello di WPF?

Scusa l'ignoranza...
E' la proprietà Content. Ma non serve specificare, è già la proprietà di default del Button. Metti
<Button><AccessText ... /></Button>

Ciao

Il mio blog
Homepage
13 messaggi dal 04 gennaio 2007
Me ne sono accorto

Metto il codice corretto a chi interessa...

Grazie ancora ...

A buon Rendere!


<MenuItem>
<MenuItem.Header>
<AccesText Text="{Binding Source={StaticResource LanguagesList},
XPath=String[@id\=\'2\']}" />
</MenuItem.Header>
<MenuItem>

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.