среда, 24 февраля 2016 г.

Заметки по C# ITU Gaze Tracker

I. Включение слайдера в интерфейсе и привязка его к переменной.






1. создаем переменную calibPointSize  в классе Visualization

        private double calibPointSize = 100.0;

2. оформляем её как свойство. Для этого там же в классе Visualization пишем:


        public double CalibPointSize
        {
            get { return calibPointSize; }
            set
            {
                calibPointSize = value;
                OnPropertyChanged("CalibPointSize");
            }
        }


3. В диалоге SettingsWindow.xaml создаем слайдер с именем "SliderCapibPointSize"  и привязываем к свойству "CalibPointSize"


                <Slider x:Name="SliderCapibPointSize" Value="{Binding CalibPointSize}" Minimum="30.0" Maximum="150.0"
                        Style="{DynamicResource SimpleSlider}"
AutoToolTipPlacement="TopLeft"
...
/>


AutoToolTipPlacement="TopLeft"  - позволяет показывать числовое значение над бегунком.

4. Чтобы привязалось правильно нужно в SettingsWindow.xaml.cs указать, что для нашего слайдера источником данных будет Settings.Instance.Visualization. Для этого в метод onLoad()
добавляем: 

            SliderCapibPointSize.DataContext = Settings.Instance.Visualization;

5. В методе SetValues() инициализируем значение слайдера значением свойства
            SliderCapibPointSize.Value = Settings.Instance.Visualization.CalibPointSize;

6. В  GTSettings.Visualization добавляем сохранение и восстановление параметров

    в WriteConfigFile()

            Settings.WriteElement(xmlWriter, "CalibPointSize", CalibPointSize.ToString());

    в LoadConfigFile()

            case "CalibPointSize":
                CalibPointSize = double.Parse(xmlReader.Value);
                break;


----------------------------------------------------------------------------------------------------

II. Чтобы Expander в свёрнутом состоянии не перекрывал нижележащие элементы
у него нужно выставить свойство Background="{x:Null}"




III. Добавляем открытие окна приложения


. Создаем команду ApplicationECommands в GTCommons.Commands



using System.Windows;

namespace GTCommons.Commands
{
    public class ApplicationEFCommands : Window
    {
        public static readonly RoutedEvent ApplicationEFEvent = EventManager.RegisterRoutedEvent("ApplicationEFEvent",
                                                                                            RoutingStrategy.Bubble,
                                                                                            typeof (RoutedEventHandler),
                                                                                            typeof(ApplicationEFCommands));

        public void ApplicationEF()
        {
            var args1 = new RoutedEventArgs();
            args1 = new RoutedEventArgs(ApplicationEFEvent, this);
            RaiseEvent(args1);
        }

        public event RoutedEventHandler OnApplicationEFOpen
        {
            add { base.AddHandler(ApplicationEFEvent, value); }
            remove { base.RemoveHandler(ApplicationEFEvent, value); }
        }

    }
}

.  В class GTCommands добавляем команду

        private readonly ApplicationEFCommands applicationEFCommands;


        private GTCommands()
        {
            ...
            applicationEFCommands = new ApplicationEFCommands();
        }



        public ApplicationEFCommands ApplicationEF
        {
            get { return applicationEFCommands; }
        }




. В MenubarIconsUserControl.xaml.cs создаем метод для открытия приложения
        private void ApplicationEF(object sender, MouseButtonEventArgs e)
        {
            GTCommands.Instance.ApplicationEF.ApplicationEF();
        }






. В MenubarIconsUserControl.xaml создаем иконку для открытия приложения и привязываем её к команде  MouseDown="ApplicationEF"

            <Image x:Name="IconApplicationEF" MouseDown="ApplicationEF" Margin="7,-2,0,1" Width="22" Height="22"
                   Source="Graphics/icon_lightbulb3.png" Stretch="Fill"
                   ToolTip="Open application EF window">
<Image.Effect>
<DropShadowEffect ShadowDepth="5"/>
</Image.Effect>
</Image>

. В GazeTrackerUIMainWindow.xaml.cs
создаем метод который реально открывает окно приложения:  

    private void OnApplicationEFOpen(object sender, RoutedEventArgs e)
    {
         ...
      }



и привязываем его к событию

      GTCommands.Instance.ApplicationEF.OnApplicationEFOpen += OnApplicationEFOpen;




----------------------------------------------------------------------------------------------------

Комментариев нет:

Отправить комментарий