0

In my windows phone 8 application, while trying to create a dependency property I am always getting this exception. what I am doing wrong, plz guide me.

{System.Windows.Markup.XamlParseException: Failed to create a 'System.Windows.RoutedEventHandler' from the text 'Button_Click'. [Line: 108 Position: 66] at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) at com.sap.View.HomePage.InitializeComponent()
at com.sap.View.HomePage..ctor()}

this is code-behind of Header

public static readonly DependencyProperty MenuClickProperty = DependencyProperty.Register("MenuClick", typeof(RoutedEventHandler), typeof(Header), new PropertyMetadata(OnMenuClickHandlerChanged));

public RoutedEventHandler MenuClick
        {
            get { return (RoutedEventHandler)GetValue(MenuClickProperty); }
            set { SetValue(MenuClickProperty, new RoutedEventHandler(value)); }
        }

        private static void OnMenuClickHandlerChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            Header header = d as Header;
            header.OnMenuClickHandlerPropertyChanged(e);
        }
        private void OnMenuClickHandlerPropertyChanged(DependencyPropertyChangedEventArgs e)
        {
            MenuButton.Click += MenuClick;
        }

this is in my user control (Header)

<Button Click="{Binding Path=MenuClick, Source={RelativeSource Mode=Self}}" />

this is how i am including control on my Page:

<myControls:Header Title="{Binding Title}" MenuClick="Button_Click" />

this is in code-behind:

public void Button_Click(object sender, RoutedEventArgs e)
        {
            OpenSettings();
        }
4

1 回答 1

0

虽然不是答案,但我找到了替代解决方案。

将事件添加到 UserControl(Header) 的代码隐藏中

public delegate void MenuClickEventHandler(object sender, RoutedEventArgs e);
        public event MenuClickEventHandler MenuClicked;
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (MenuClicked != null)
            {
                MenuClicked(this, e);
            }
        }

在用户控件中绑定它:

Click="Button_Click"

然后在页面中:

<myControls:Header Title="{Binding Title}" MenuClicked="Menu_Button_Click" />

在代码隐藏中:

public void Menu_Button_Click(object sender, RoutedEventArgs e)
    {

    }
于 2013-10-24T09:52:01.717 回答