Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

Migliorie qua e là alla Window ChooseEmoticon

Ho dato qualche ritocco alla Window ChooseEmoticon del mio plug-in. Innanzitutto, il WrapPanel che contiene le emoticons è contenuto a sua volta in uno ScrollViewer che, se necessario, mostra una barra di scorrimento verticale.

<ScrollViewer Grid.Column="0" Grid.Row="1" VerticalScrollBarVisibility="Visible"> <WrapPanel DataContext="barSize" Name="MainPanel"> <WrapPanel.ItemWidth> <Binding ElementName="barSize" Path="Value" Mode="TwoWay"/> </WrapPanel.ItemWidth> <WrapPanel.ItemHeight> <Binding ElementName="barSize" Path="Value" Mode="TwoWay"/> </WrapPanel.ItemHeight> </WrapPanel> </ScrollViewer>

Questo non vi obbliga più a ridimensionare la finestra per vedere tutte le emoticons. Potete agire sulla ScrollBar verticale o potete ridimensionare, come siete più comodi.

Ho attivato inoltre un piccolo meccanismo di data-binding. Ho bindato il controllo WrapPanel all'oggetto barSize e ho bindato le proprietà ItemWidth ed ItemHeight del WrapPanel alla proprietà Value di un'altra ScrollBar orizzontale che ho posizionato sulla Window. La ScrollBar è molto comoda, perchè agendo su di essa si ridimensionano i Button delle emoticons.

<ScrollBar Margin="2" Grid.Column="0" Grid.Row="3" Name="barSize" Orientation="Horizontal" LargeChange="20" SmallChange="5" Minimum="5" Maximum="500" Value="{StaticResource Size}"/>

La proprietà Value della ScrollBar viene inizializzata dalla risorsa chiamata Size che, come abbiamo detto l'altra volta, viene iniettata via C# prelevando il valore dalla classe VivendoByteEmoticonsSettings. Come ho detto nei precedenti post, il valore di ItemWidth ed ItemHeight fa parte dei settings: quando la Window viene chiusa, salvo il valore per fare in modo che venga persistito fra più sessioni. Per farlo, faccio l'override di OnClosed:

protected override void OnClosed(EventArgs e) { _settings.Size = MainPanel.ItemHeight; _settings.Save(); base.OnClosed(e); }

Il file dei settings è per-user, e viene salvato in C:\Documents and Settings\Damiani\Local Settings\Application Data\Microsoft_Corporation\WindowsLiveWriter.exe_StrongName_d24s4tba5huluuxhypp0rk3iqftkbmdu\1.0.0.141. Credo che il plug-in, vivendo hostato dentro Windows Live Writer, prenda giustamente il nome della società ed il nome dell'assembly EXE che sta girando, e quindi...

Print | posted on Thursday, February 22, 2007 5:26 PM | Filed Under [ Sviluppo .NET ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET