我在XAML中定義EventHandler時遇到問題。請看看代碼,你會明白我在做什麼以及我如何在XAML中分配一個方法,或者更好地說我是如何在XAML中定義EventHandler的。定義EventHandler <EventArgs>在XAML中
這是代碼:
public static EventHandler<EventArgs> GetResetValue(DependencyObject obj)
{
return (EventHandler<EventArgs>)obj.GetValue(ResetValueProperty);
}
public static void SetResetValue(DependencyObject obj, EventHandler<EventArgs> value)
{
obj.SetValue(ResetValueProperty, value);
}
// Using a DependencyProperty as the backing store for ResetValue. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ResetValueProperty =
DependencyProperty.RegisterAttached("ResetValue", typeof(EventHandler<EventArgs>), typeof(Extension), new UIPropertyMetadata(null, OnResetValue));
private static void OnResetValue(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
DependencyObject obj = dependencyObject;
for (; obj != null && !(obj is TextBox); obj = VisualTreeHelper.GetParent(obj)) ;
TextBoxtbx = obj as TextBox;
if (tbx != null)
{
tbx.TextChanged += (EventHandler<EventArgs>)dependencyPropertyChangedEventArgs.NewValue;
}
}
XAML看起來像這樣:
<TextBox>
<Button>
<Label ext:Extension.ResetValue=".. here i want to assign the handler, as examle DoSomething" >
</Button>
</TextBox>
我想分配給附接處理的方法,是內部Window.cs看起來像這樣作爲例子:
public void DoSomething(object sender, EventArgs e)
{
....
}
正如你可以在OnResetValue方法中看到的,我沿着VisualTree行進,直到找到TextBox並添加TextBox.TextChanged事件處理程序。
當框TextChanged然後附加處理方法將被調用,它將調用指定的方法
的問題是我怎麼定義,在XAML附加投手與DoSomething的方法?請別無選擇。如果可能的話,我想用事件來做到這一點。
請澄清你的問題。你已經明確地嘗試了一個解決方案,但是你需要說出什麼不起作用,以便人們可以幫助你。 – 2013-03-14 13:13:37
我編輯了我的問題。分配不起作用。請閱讀第一句,您將知道在EventHandler類型的附加屬性處理程序中定義/設置/分配方法時遇到問題。還要看看xaml,你會看到我希望將方法定義爲附加屬性處理程序的位置。 –
2013-03-14 13:36:07