Привязка местоположения окна WPF - PullRequest
4 голосов
/ 21 марта 2011

В формах Windows в разделе свойств формы была возможность установить связь между настройкой приложения и формой окна.

Как правило, я получаю параметр frmMyFormName_Location, который затем автоматически обновляется по мере необходимости, и все, что мне нужно было сделать, это вызвать метод Settings.Save () при выходе из приложения, чтобы сохранить местоположение.

Может ли кто-нибудь привести пример того же самого в WPF, поскольку я не смог понять, как это сделать?

Ответы [ 3 ]

19 голосов
/ 21 марта 2011

Крайне просто привязать настройки пользователя или приложения из файла .settings в WPF.

Вот пример окна, которое получает свою позицию и размер из настроек:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:settings="clr-namespace:WpfApplication1.Properties"
        Height="{Binding Height, Source={x:Static settings:Settings.Default}, Mode=TwoWay}" 
        Width="{Binding Width, Source={x:Static settings:Settings.Default}, Mode=TwoWay}"
        Top="{Binding Top, Source={x:Static settings:Settings.Default}, Mode=TwoWay}"
        Left="{Binding Left, Source={x:Static settings:Settings.Default}, Mode=TwoWay}">
    <Grid>

    </Grid>
</Window>

Настройки выглядят так:

Settings file

И чтобы сохранить это, я просто использую следующий код:

void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    Properties.Settings.Default.Save();
}
1 голос
/ 17 августа 2016

А вот пример для WPF VB.NET

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApplication1"
    xmlns:Properties="clr-namespace:WpfApplication1"

    Title="Test" 
    Loaded="Window_Loaded" Closing="Window_Closing"      
    Height="{Binding Height, Source={x:Static Properties:MySettings.Default}, Mode=TwoWay}"
    Width="{Binding  Width,Source={x:Static Properties:MySettings.Default},  Mode=TwoWay}"
    Left="{Binding  Left,Source={x:Static Properties:MySettings.Default},  Mode=TwoWay}"
    Top="{Binding Top, Source={x:Static Properties:MySettings.Default},  Mode=TwoWay}"
    >

<Grid Name="MainFormGrid"> ...
0 голосов
/ 21 марта 2011

Приведенные ниже ссылки могут помочь для сохранения настроек приложения.В окне WPF нет ни одного свойства с именем Location, но у вас есть событие LocationChanged, которое вы можете обработать и написать соответствующим образом.

Примером может быть:

private void Window_LocationChanged(object sender, EventArgs e)
        {
            var left = (double)GetValue(Window1.LeftProperty);
            var top = (double)GetValue(Window1.TopProperty);
             // persist these values
             . . .
        }

Дляпостоянные настройки приложения:

c # - подход для сохранения пользовательских настроек в приложении WPF? settings-in-a-wpf-application

Файл настроек приложения WPF

Где хранить общие настройки приложения

...