public static class XamCheckEditorLOBBehavior
{
public static DependencyProperty ValueChangedProperty = DependencyProperty.RegisterAttached("ValueChanged",
typeof(ICommand),
typeof(XamCheckEditorLOBBehavior),
new UIPropertyMetadata(XamCheckEditorLOBBehavior.ModifyValueChanged));
public static DependencyProperty ValueChangedArgumentProperty = DependencyProperty.RegisterAttached("ValueChangedArgument",
typeof(Tuple<bool,string>),
typeof(XamCheckEditorLOBBehavior),
new PropertyMetadata(null));
public static void SetValueChanged(UIElement element, ICommand value)
{
element.SetValue(ValueChangedProperty, value);
}
public static void SetValueChangedArgument(UIElement element, Tuple<bool, string> value)
{
element.SetValue(ValueChangedArgumentProperty, value);
}
private static void ModifyValueChanged(DependencyObject target, DependencyPropertyChangedEventArgs e)
{
XamCheckEditor element = target as XamCheckEditor;
if (element == null) throw new InvalidOperationException("This behavior can be attached to XamCheckEditor only.");
if ((e.NewValue != null) && (e.OldValue == null))
{
element.ValueChanged += XamCheckEditor_ValueChanged;
}
else if ((e.NewValue == null) && (e.OldValue != null))
{
element.ValueChanged -= XamCheckEditor_ValueChanged;
}
}
private static void XamCheckEditor_ValueChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
UIElement element = (UIElement)sender;
ICommand command = (ICommand)element.GetValue(XamCheckEditorLOBBehavior.ValueChangedProperty);
Tuple<bool, string> commandArgument = (Tuple<bool, string>)element.GetValue(XamCheckEditorLOBBehavior.ValueChangedArgumentProperty);
command.Execute(commandArgument);
}
}
i to onda lepo zakacim
<ig:XamCheckEditor Grid.Column="0"
beh:XamCheckEditorLOBBehavior.ValueChanged="{Binding Path=toggleLOBCommand}"
beh:XamCheckEditorLOBBehavior.ValueChangedArgument="{Binding Path=item}" />
i to radi.
Moje pitanje je, moze li ovaj c# kod gore da se napravi malo jednostavnije, tj ima li neka ispomoc po ovom pitanju da se smanji broj (ili bar velicina) ovih behavior klasa. Imam jos podosta ovakvih da napravim (sa obzirom na to da se vezuju za tip i vrstu eventa) pa me interesuje moze li ovo lakse i ima li vec nesto u MVVMu (Prismu?) sto mi odradi bar deo posla?
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić