Я пытаюсь сохранить местоположение окна, у меня есть следующий XAML (не относящиеся к делу части удалены)
<Window x:Class="App.MainWindow"
Title="MainWindow" Name="mainWindow"
Top="{Binding Source={StaticResource Settings}, Path=Default.PositionY}"
Left="{Binding Source={StaticResource Settings}, Path=Default.PositionX}"
AllowsTransparency="True" WindowStyle="None" SizeToContent="WidthAndHeight"
Background="#01000000" Topmost="{Binding Source={StaticResource Settings}, Path=Default.AlwaysOnTop}"
MouseLeftButtonDown="mainWindow_MouseLeftButtonDown"
«Настройки» определены в App.xaml и соответствуют настройкам приложения
Поиск в Google дает несколько примеров этого, используя именно тот метод, который я использовал.
Привязка TopMost работает точно так же, как и ожидалось, это значение сохраняется между запусками
Связывание Top и Left, однако, работает только в одном направлении. Окно правильно выбирает свое местоположение из настроек, но при перемещении настройки не обновляются.
Точка останова в моей функции Settings.Save показывает, что свойства Top и Left изменились, как и ожидалось. Копирование этих значений вручную перед сохранением работает нормально.
Я попытался явно указать Mode = TwoWay безрезультатно (в любом случае должен быть по умолчанию)
PositionX и PositionY - пользовательские настройки, определенные как тип double
Перемещение окна осуществляется с помощью следующего обработчика мыши
private void mainWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs args)
{
DragMove();
}
Есть идеи, почему двусторонняя привязка работает только в одну сторону?