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"
...
/>
5. В методе SetValues() инициализируем значение слайдера значением свойства
SliderCapibPointSize.Value = Settings.Instance.Visualization.CalibPointSize;
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>
у него нужно выставить свойство 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;
создаем метод который реально открывает окно приложения:
private void OnApplicationEFOpen(object sender, RoutedEventArgs e)
{
...
}
и привязываем его к событию
GTCommands.Instance.ApplicationEF.OnApplicationEFOpen += OnApplicationEFOpen;
----------------------------------------------------------------------------------------------------
Комментариев нет:
Отправить комментарий