2016-09-05 1 views
0

habe ich meinen Kalender mit Stil:WPF/XAML-Event-Handler in der Art mit Blick Modell Bindung

<Style x:Key="CalendarDayButtonStyle" TargetType="CalendarDayButton"> 
     <Setter Property="Background" Value="{StaticResource Brush.Foreground.TextBlock.LightBlue}" /> 
     <Setter Property="MinWidth" Value="5" /> 
     <Setter Property="MinHeight" Value="5" /> 
     <Setter Property="FontSize" Value="12" /> 
     <Setter Property="HorizontalContentAlignment" Value="Center" /> 
     <Setter Property="VerticalContentAlignment" Value="Center" /> 
     <Setter Property="Template"> 
     ... 

     <EventSetter Event="MouseDoubleClick" Handler="{Binding DayButtonCommand}"/> 
    </Style> 

und ich mag den Befehl von Mousedoubleclick-Ereignisse auszuführen.

Aber zu Beginn der Anwendung Ausnahme auftritt: „Eine nicht behandelte Ausnahme des Typs‚System.Windows.Markup.XamlParseException‘in PresentationFramework.dll aufgetreten

Zusätzliche Informationen: BaseUri kann nur einmal an dem eingestellt wird Root-Knoten (der XamlXmlReader möglicherweise einen Standardwert am Stammknoten bereitgestellt wird). "

Ich erstelle diesen Style in der Ressourcendatei und arbeite mit MVVM.

Wie kann ich MouseDoubleClick-Ereignis mit diesem Style für CalendarDayButton binden?

Danke.

Antwort

0

Sie sollten keinen Stil dafür verwenden, sondern ein angehängtes Verhalten verwenden, um einen Befehl auszulösen, wenn das DoubleClick-Ereignis ausgelöst wird. MVVM light has such a feature.

Die XAML sieht wie folgt aus:

<CalendarDayButton ...> 

    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="Tap"> 
     <command:EventToCommand 
      Command="{Binding Main.NavigateToArticleCommand, 
      Mode=OneWay, 
      Source={StaticResource Locator}}" 
      CommandParameter="{Binding Mode=OneWay}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</CalendarDayButton> 

EDIT: Sie können auch eine Routed Eventhandler auf dem Kalender-Objekt in der Ansicht verwenden, und rufen Sie den Befehl Ansichtsmodell aus der Code-Behind-Ansicht. Example

+0

Ich habe es bereits versucht, aber XAML schreiben "Eigenschaft 'Auslöser' ist nicht an Elemente des Typs 'Style' anhängen". – SergS

+0

Ich wiederhole, was ich gesagt habe, sollten Sie nicht einen Stil dafür verwenden. Verwenden Sie möglicherweise einen Event-Handler für das Calendar-Objekt und feuern Sie den ViewModel-Befehl aus der Code-Behind-Ansicht. [Siehe hierzu] (https://msdn.microsoft.com/en-us/library/ms742550%28v=vs.110%29.aspx) –

+0

Eine sehr gute Idee. Ich habe dies in View with Calendar und in Code-behind ich ViewModell aufrufen. Vielen Dank – SergS