2011-03-21 197 views
4

在Windows窗體中,窗體的屬性部分中有一個選項用於在應用程序設置和窗體窗體之間建立綁定。WPF窗口位置綁定

通常我最終會得到一個名爲frmMyFormName_Location的設置,然後根據需要自動更新,我需要做的就是調用應用程序退出時的Settings.Save()方法來保存位置。

有人可能請提供一個WPF中的相同的事例,因爲我一直無法解決如何實現這個目標?

回答

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(); 
} 
+0

你是槍!謝謝... – 2011-03-22 00:57:05

+0

madd0 - 你搖滾。真棒回覆,感謝 – 2013-09-25 16:19:23

+0

+1模式= TwoWay' – Daryn 2014-05-09 17:17:26

0

以下鏈接可能有助於存儲應用程序設置。在WPF窗口中沒有稱爲位置的單個屬性,但是您確實有一個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? 設置-IN-A-WPF的應用程序

WPF Application Settings File

Where to store common application settings

+0

雖然我衷心感謝您的意見,但我希望能夠通過綁定的方式來聲明性地做到這一點。 – 2011-03-21 04:43:15

+0

我努力找到這樣一個樣本,但不幸的是,大多數人似乎使用代碼來實現這一點。看看這個: http://www.codeproject.com/KB/WPF/SaveRestoreWPFWindowSize.aspx – 2011-03-21 05:26:56

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