WPF窗口位置绑定

时间:2011-03-21 01:21:46

标签: c# wpf binding settings

在Windows窗体中,窗体的属性部分中有一个选项可以在应用程序设置和窗体之间建立绑定。

通常我会得到一个名为frmMyFormName_Location的设置,然后根据需要自动更新,我需要做的就是在应用程序退出时调用Settings.Save()方法来保持位置。

有人可以在WPF中提供相同内容的示例,因为我无法弄清楚如何完成此操作吗?

3 个答案:

答案 0 :(得分:19)

从WPF中的.settings文件绑定到用户或应用程序设置非常简单。

这是一个窗口示例,它从设置中获取其位置和大小:

<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 :(得分:1)

这是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"> ...

答案 2 :(得分:0)

以下链接可能有助于存储应用程序设置。在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# - approach for saving user settings in a WPF application? 设置 - 在-A-WPF的应用程序

WPF Application Settings File

Where to store common application settings