public class ViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } private string miaProprieta; public string MiaProprieta { get { return miaProprieta; } set { if (miaProprieta != value) { miaProprieta = value; OnPropertyChanged("MiaProprieta"); } } } }
Visualizzazione post con etichetta "silverlight". Mostra tutti i post
Visualizzazione post con etichetta "silverlight". Mostra tutti i post
domenica 8 settembre 2013
Implementare INotifyPropertyChanged
Di seguito viene illustrato come implementare l'interfaccia INotifyPropertyChanged per notificare che una proprietà è cambiata.
Etichette:
"c#",
"mvvm",
"propetychanged",
"silverlight",
"windowsphone",
"wp7",
"wpf"
sabato 27 luglio 2013
[WPF-SL-Win8] Modern UI (Metro) Charts per Windows 8, WPF, Silverlight
Progetto open source che ci pemette di creare dei grafici in stile metro nella applicazione per Windows 8, WPF e Silverlight.
Sito ufficiale
Grafici disponibili
- ColumnChart (ClusteredColumnChart, StackedColumnChart, StackedColumnChart100Percent)
- PieChart (PieChart and Dognut)
- BarChart (ClusteredBarChart, StackedBarChart, StackedBarChart100Percent)
- Doughnut Chart
- Radial Gauge Chart
Sito ufficiale
Etichette:
"chart",
"metro",
"silverlight",
"windows 8",
"wpf"
mercoledì 10 luglio 2013
[Silverlight + WCF] Chiamata Cross Domain
Non è consentito effettuare da Silverlight (per questioni di sicurezza) chiamate remote cross dominio, a meno che il servizio non espone il file clientaccesspolicy.xaml.
Per ovviare a ciò non ci resta che creare il file clientaccesspolicy.xml nella root progetto WCF:
Errore durante il tentativo di effettuare una richiesta all'URI xxxx. Ciò può essere dovuto al tentativo di accesso a un servizio in modalità di interdominio senza disporre di criteri di interdominio appropriati o con criteri non adatti ai servizi SOAP. Potrebbe essere necessario contattare il proprietario del servizio per pubblicare un file di criteri di interdominio e verificare che consenta l'invio di intestazioni HTTP correlate a SOAP. Questo errore potrebbe essere anche dovuto all'utilizzo di tipi interni nel proxy del servizio web senza utilizzare l'attributo InternalsVisibleToAttribute. Per ulteriori informazioni, vedere l'eccezione interna.
Per ovviare a ciò non ci resta che creare il file clientaccesspolicy.xml nella root progetto WCF:
<?xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from http-request-headers="SOAPAction"> <domain uri="*"/> </allow-from> <grant-to> <resource path="/" include-subpaths="true"/> </grant-to> </policy> </cross-domain-access> </access-policy>Errore visualizzato:
Errore durante il tentativo di effettuare una richiesta all'URI xxxx. Ciò può essere dovuto al tentativo di accesso a un servizio in modalità di interdominio senza disporre di criteri di interdominio appropriati o con criteri non adatti ai servizi SOAP. Potrebbe essere necessario contattare il proprietario del servizio per pubblicare un file di criteri di interdominio e verificare che consenta l'invio di intestazioni HTTP correlate a SOAP. Questo errore potrebbe essere anche dovuto all'utilizzo di tipi interni nel proxy del servizio web senza utilizzare l'attributo InternalsVisibleToAttribute. Per ulteriori informazioni, vedere l'eccezione interna.
Etichette:
"crossdomain",
"silverlight",
"wcf"
giovedì 4 luglio 2013
[WPF - SL] Interfaccia multi-finestre con FloatingWindow
FloatingWindow è un'insieme di librerie che permette di creare delle interfacce multi-finestre (multi-windows interface).
E' disponibile sia per WPF che per Silverlight.
E' disponibile sia per WPF che per Silverlight.
Struttura
- FloatingWindow: Classe di base della finestra ridimensionabile (resizable windows)
- FloatingWindowHost: Elemento canvas che contiene le varie FloatinWindo
- Iconbar: Pannelo contenente le icone della finestra
- Bootstrap Button: pulsante di apertura/chiusura dell'IconBar
- Bottom Bar: controllo che può hostare altri tipi di controlli
Utilizzo
.
Creazione FloatingWindowHost da XAML<my:FloatingWindowHost x:Name="host"
SnapinEnabled="True" ShowMinimizedOnlyInIconbar="False">
</my:FloatingWindowHost>
Creazione FloatingWindow da C#FloatingWindow window = new FloatingWindow();
window.Title = "New window";
host.Add(window);
window.Show();
Creazione FloatingWindow da XAML<my:FloatingWindow x:Class="FloatingWindowControl.DetailsForm" xmlns:my="clr-namespace:SilverFlow.Controls;assembly=SilverFlow.Controls" Height="Auto" MinWidth="100" MinHeight="100" Title="Details" IconText="Details Form" Tag="Details">
Etichette:
"silverlight",
"wpf"
martedì 18 giugno 2013
[SL4] Forzare il re-binding di un controllo
public static void ForceControlRebind(Control cntrl, DependencyProperty depprop) { try { BindingExpression BindExp = cntrl.GetBindingExpression(depprop); Binding Bind = BindExp.ParentBinding; cntrl.SetBinding(depprop, Bind); } catch { } } |
Etichette:
"binding",
"c#",
"silverlight"
[WPF/SL/WP] Clonare ObservableCollection
Metodo esteso che consente di clonare una generica ObservableCollection.
public static ObservableCollection<T> Clone<T> (this ObservableCollection<T> source) { if (source != null) { var res = new ObservableCollection<T>(); foreach (var item in source) { res.Add(Clone<T>(item)); } return res; } return null; } |
[SL4] Settare pulsante di defualt
public class DefaultButton { public static DependencyProperty DefaultButtonProperty = DependencyProperty.RegisterAttached("DefaultButton", typeof(Button), typeof(DefaultButton), new PropertyMetadata(null, DefaultButtonChanged)); private static void DefaultButtonChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var uiElement = d as UIElement; var button = e.NewValue as Button; if (uiElement != null && button != null) { uiElement.KeyUp += (sender, arg) => { var peer = new ButtonAutomationPeer(button); if (arg.Key == Key.Enter) { peer.SetFocus(); uiElement.Dispatcher.BeginInvoke((Action)delegate { var invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider; if (invokeProv != null) { if (button.IsEnabled) { invokeProv.Invoke(); } } }); } }; } } public static Button GetDefaultButton(UIElement obj) { return (Button)obj.GetValue(DefaultButtonProperty); } public static void SetDefaultButton(DependencyObject obj, Button button) { obj.SetValue(DefaultButtonProperty, button); } } |
XAML
<TextBox utility:DefaultButton.DefaultButton="{Binding ElementName=nomeBottone}"/>
Iscriviti a:
Post (Atom)


