簡體   English   中英

如何將用戶設置 (Properties.Settings.Default) 綁定到 WPF 控件?

[英]How can I bind user settings (Properties.Settings.Default) to WPF controls?

我想為用戶設置創建一個 WPF window,並將控件綁定到 Properties.Settings.Default 中定義的用戶設置。 聽起來很簡單,就像幾乎所有應用程序中所做的一樣。 然而,我似乎無法實現雙向綁定,即控件顯示值,但用戶輸入不會寫回設置 object。這是 XAML 的一部分,其中 canvas 定義了數據上下文並包含一些控件。

<Canvas x:Name="CanvasMain">
    <Canvas.DataContext>
        <Properties:Settings/>
    </Canvas.DataContext>
    <CheckBox x:Name="chkThingEnabled" Content="Thing" Height="20" Canvas.Left="19" Canvas.Top="64" Width="106" IsChecked="{Binding ThingEnabled}"/>
    <TextBox Canvas.Left="19" Text="{Binding TestText}" Canvas.Top="104" Width="120"/>
</Canvas>

只需在項目的默認設置網格中輸入設置: ThingEnabled:Type = bool,Scope = User,Value = False TestText:Type = string,Scope = User,Value =“TEST”

如何進行此數據綁定,以便將對控件值的更改寫入設置的綁定屬性中?

像這樣的表達

<Properties:Settings/>

將創建設置 class 的新實例。

為了綁定到命名空間YourApplication.PropertiesSettings class 的Default屬性 static,您需要一個正確的 XAML 命名空間聲明和一個適當的綁定表達式,括號中包含 static 屬性路徑。

您還應該考慮使用合適的布局面板。 Canvas 在這里不是正確的。

這樣的事情應該有效:

<Window ...
    xmlns:properties="clr-namespace:YourApplication.Properties">

    <StackPanel DataContext="{Binding Path=(properties:Settings.Default)}">

        <CheckBox IsChecked="{Binding ThingEnabled}" .../>
        <TextBox Text="{Binding TestText}" .../>
    </StackPanel>
</Window>

您需要調用Properties.Settings.Default.Save()方法使設置在關閉您的應用程序之前的某個時間持久化。 請參閱如何:使用 C# 在運行時編寫用戶設置

實際上,這種方法並不方便,因為用戶設置文件的路徑取決於您的應用程序的版本號,並且在您更改版本時不會將其傳遞到較新的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM