C# Caliburn.Micro 2.0和WP 8.1-消息。附加不向事件处理程序发送$eventArgs

C# Caliburn.Micro 2.0和WP 8.1-消息。附加不向事件处理程序发送$eventArgs,c#,xaml,windows-phone-8.1,caliburn.micro,eventargs,C#,Xaml,Windows Phone 8.1,Caliburn.micro,Eventargs,我在WindowsPhone8.1上开发了一个应用程序。触发事件时,不会发送eventArgs。为什么?在旧的解决方案WP 8.0中,此语法工作正常 <TextBox x:Name="Amount" Grid.Row="2" Grid.Column="1" InputScope="Number" Header="{Binding TbAmount}" micro:Message.Attach="[Event KeyUp] = [Action NumericKeyboard_OnKe

我在WindowsPhone8.1上开发了一个应用程序。触发事件时,不会发送eventArgs。为什么?在旧的解决方案WP 8.0中,此语法工作正常

    <TextBox x:Name="Amount" Grid.Row="2" Grid.Column="1" InputScope="Number" Header="{Binding TbAmount}" micro:Message.Attach="[Event KeyUp] = [Action NumericKeyboard_OnKeyUp($source, $eventArgs)]"/>
我在WindowsPhone8.1上开发了一个应用程序。触发事件时,不会发送eventArgs。为什么?在旧的解决方案WP 8.0中,此语法工作正常

    <TextBox x:Name="Amount" Grid.Row="2" Grid.Column="1" InputScope="Number" Header="{Binding TbAmount}" micro:Message.Attach="[Event KeyUp] = [Action NumericKeyboard_OnKeyUp($source, $eventArgs)]"/>
我找到了解决办法。。。eventargs的类型是错误的,因为他引用的是WP8的TextBox控件,即KeyEventArgs。WP 8.1中的文本框控件位于Windows.UI:XAML.Controls中,并使用KeyRoutedEventArgs

正确的代码是:

    public void NumericKeyboard_OnKeyUp(object sender, KeyRoutedEventArgs e)
    {
        if (CultureInfo.CurrentCulture.ToString() != "en-US")
            return;

        if (e.Key.ToString() == "188")
        {
            var distanceTb = sender as TextBox;
            distanceTb.Text = distanceTb.Text.Replace(",", ".");

            // reset cursor position to the end of the text (replacing the text will place
            // the cursor at the start)
            distanceTb.Select(distanceTb.Text.Length, 0);
        }
    }

您是否尝试删除x:Name属性?@mvermef:同时删除x:Name也不起作用。。。