0

私の Windows Phone 8 アプリケーションでは、依存関係プロパティを作成しようとしているときに、常にこの例外が発生します。私が間違っていることを教えてください。

{System.Windows.Markup.XamlParseException: テキスト 'Button_Click' から 'System.Windows.RoutedEventHandler' を作成できませんでした。[行: 108 位置: 66] at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) at com.sap.View.HomePage.InitializeComponent()
at com.sap.View.HomePage..ctor()}

これはヘッダーの分離コードです

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;
        }

これは私のユーザーコントロール(ヘッダー)にあります

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

これは、ページにコントロールを含める方法です:

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

これはコードビハインドにあります:

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 に答える