2014-01-09 6 views
1

Вместо того, чтобы использовать событие, созданное устройством ввода, я хочу использовать настраиваемое событие, которое будет программно программироваться в коде в качестве EventTrigger в моем XAML.
Это должно быть смешно, но я нигде не могу найти пример.RoutedEvent «член не распознан или недоступен»

Вот что я придумал от изучения WPF4 Unleashed Глава 6, Routed Event Implementation, EventTrigger.RoutedEvent Property, Custom RoutedEvent as EventTrigger, и многие другие:

MainWindow.xaml.cs:

namespace RoutedEventTrigger 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      RaiseEvent(new RoutedEventArgs(fooEvent, this)); 
     } 
     public static readonly RoutedEvent fooEvent = EventManager.RegisterRoutedEvent(
     "foo", RoutingStrategy.Direct, typeof(RoutedEventHandler), typeof(MainWindow)); 

     // Provide CLR accessors for the event 
     public event RoutedEventHandler foo 
     { 
      add { AddHandler(fooEvent, value); } 
      remove { RemoveHandler(fooEvent, value); } 
     } 
    } 
} 

MainWindow .xaml:

MainWindow.xaml

P.S. Пожалуйста, будьте осторожны, я относительно новичок в WPF.

ответ

5

Okuma Скотт,

Вы пытались построить (восстановить) проект. WPF требует, чтобы вы построили проект, чтобы изменения проекта были видимыми для анализатора XAML. Используя приведенный ниже код, просто отлично.

Код

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    public static readonly RoutedEvent fooEvent = EventManager.RegisterRoutedEvent("foo", RoutingStrategy.Direct, typeof(RoutedEventHandler), typeof(MainWindow)); 

    // Provide CLR accessors for the event 
    public event RoutedEventHandler foo 
    { 
     add { AddHandler(fooEvent, value); } 
     remove { RemoveHandler(fooEvent, value); } 
    } 
} 

XAML.

<Window x:Class="WpfApplication3.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfApplication3" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Triggers> 
     <EventTrigger RoutedEvent="local:MainWindow.foo" /> 
    </Window.Triggers> 
</Window> 

Edit: отображалось Та же ошибка синтаксического анализа, пока проект не был заново построен.

+0

Я не думал попробовать, но это сработало! Невероятно. И здесь я подумал, что изменения, внесенные в xaml, были видны сразу. Я полагал, что, должно быть, делал что-то действительно не так, потому что окно предварительного просмотра не отображалось, ссылаясь на «недопустимую разметку», и просто создание проекта не помогло этому. Мне нужно было (Clean Solution) -> (Rebuild) очистить ошибку. Благодаря! –

+0

Reboot, Clean, Rebuild ничего не работает для меня! Он строит и работает отлично, но дизайнер терпит неудачу. Argh. – Ciantic

0

У меня была такая же проблема, но перестройка не работала для меня до тех пор, пока я не оставил свою студию. Закрыл его и снова открыл Projekt, и он отлично работал.

0
<Window.Triggers> 
    <EventTrigger RoutedEvent="{x:Static local:MainWindow.foo}" /> 
</Window.Triggers> 

Я столкнулся с той же проблемой, но все ваши решения не сработали для меня. Этот фрагмент выше решил проблему для меня.

 Смежные вопросы

  • Нет связанных вопросов^_^