![](/img/trans.png)
[英]How can I bind TextBoxes to each property in Properties.Settings.Default in code?
[英]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.Properties
中Settings
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.