1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
/// <summary>
/// Logique d'interaction pour StorageDetail.xaml
/// </summary>
public partial class StorageDetail : UserControl
{
public static DependencyProperty StorageProperty = DependencyProperty.Register("Storage", typeof(Storage), typeof(StorageDetail),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, new PropertyChangedCallback(OnStorageChanged)));
public static readonly RoutedEvent StorageChangedEvent = EventManager.RegisterRoutedEvent(
"StorageChanged", RoutingStrategy.Bubble,
typeof(RoutedPropertyChangedEventHandler<Storage>), typeof(StorageDetail));
private ObjectDataProvider storage;
private ObjectDataProvider isReadOnly;
/// <summary>
/// Constructeur par défaut
/// </summary>
public StorageDetail()
{
InitializeComponent();
storage = this.FindResource("storage") as ObjectDataProvider;
isReadOnly = this.FindResource("readOnly") as ObjectDataProvider;
isReadOnly.ObjectInstance = false;
}
/// <summary>
/// Evènement déclenché lors de la modification du lieu de stockage affiché
/// </summary>
public event RoutedPropertyChangedEventHandler<StorageDetail> StorageChanged
{
add { AddHandler(StorageChangedEvent, value); }
remove { RemoveHandler(StorageChangedEvent, value); }
}
/// <summary>
/// Obtient ou défini le lieu de stockage affiché
/// </summary>
public Storage Storage
{
get
{
return (Storage)GetValue(StorageProperty);
}
set
{
SetValue(StorageProperty, value);
}
}
/// <summary>
/// Obtient ou défini si le controle est en lecture seul ou non
/// </summary>
public bool IsReadOnly
{
get
{
return (bool)this.isReadOnly.ObjectInstance;
}
set
{
this.isReadOnly.ObjectInstance = value;
}
}
private static void OnStorageChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
{
if (!(sender != null && sender is StorageDetail))
return;
StorageDetail sd = sender as StorageDetail;
sd.storage.ObjectInstance = (Storage)args.NewValue;
}
private void OnStorageChanged(RoutedPropertyChangedEventArgs<Storage> e)
{
RaiseEvent(e);
}
} |
Partager