【问题标题】:How can I save coordinates of mouse click in Blend for Visual Studio?如何在 Blend for Visual Studio 中保存鼠标单击的坐标?
【发布时间】:2014-05-23 15:57:03
【问题描述】:

我想为触摸屏设计一个界面原型,以便在用户测试期间记录每一次鼠标点击。 我成功地制作了故事板,但未能记录鼠标点击。

我查了其他问题 - How do I get the current mouse screen coordinates in WPF?, How do I get the current mouse screen coordinates in WPF? - 但无法理解如何将这些代码应用到 .xaml 或代码隐藏文件(每次试用时我都会收到错误消息。)

如果我想记录测试人员在画布上的点击位置,如何跟踪坐标并将日志导出为其他文件格式?

【问题讨论】:

    标签: xaml blend mouse-coordinates


    【解决方案1】:

    一个非常简单的例子,

    这将记录用户点击的每个位置和时间:

    <Window x:Class="WpfApplication6.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow"
            Width="525"
            Height="350"
            MouseDown="MainWindow_OnMouseDown">
        <Grid>
            <Button Width="75"
                    Margin="5"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Top"
                    Click="Button_Click"
                    Content="_Show log" />
    
        </Grid>
    </Window>
    

    后面的代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows;
    using System.Windows.Input;
    
    namespace WpfApplication6
    {
        /// <summary>
        ///     Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            private readonly List<Tuple<DateTime, Point>> _list;
    
            public MainWindow()
            {
                InitializeComponent();
                _list = new List<Tuple<DateTime, Point>>();
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                IEnumerable<string> @select = _list.Select(s => string.Format("{0} {1}", s.Item1.TimeOfDay, s.Item2));
                string @join = string.Join(Environment.NewLine, @select);
                MessageBox.Show(join);
            }
    
            private void MainWindow_OnMouseDown(object sender, MouseButtonEventArgs e)
            {
                Point position = e.GetPosition((IInputElement) sender);
                var tuple = new Tuple<DateTime, Point>(DateTime.Now, position);
                _list.Add(tuple);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 2015-05-11
      • 2015-06-29
      • 1970-01-01
      • 2014-10-20
      • 2010-10-24
      相关资源
      最近更新 更多