如何将用户设置 (Properties.Settings.Default) 绑定到 WPF 控件?
How can I bind user settings (Properties.Settings.Default) to WPF controls?
我想为用户设置创建一个 WPF window,并将控件绑定到 Properties.Settings.Default 中定义的用户设置。
听起来很简单,就像几乎所有应用程序中所做的一样。然而,我似乎无法实现双向绑定,即控件显示值,但用户输入未写回设置对象。
这是带有 canvas 的 XAML 的一部分,它定义了数据上下文并包含一些控件。
<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:类型 = 布尔值,范围 = 用户,值 = 假
测试文本:类型 = 字符串,范围 = 用户,值 =“测试”
如何进行数据绑定,以便将对控件值的更改写入设置的绑定属性?
像
这样的表达
<Properties:Settings/>
将创建设置的新实例 class。
为了绑定到命名空间 YourApplication.Properties
中 Settings
class 的静态 Default
属性,您需要一个适当的 XAML 命名空间声明和适当的绑定表达式,括号中包含静态 属性 路径。
您还应该考虑使用合适的布局面板。 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()
方法使设置在关闭您的应用程序之前的某个时间保持不变。参见 How To: Write User Settings at Run Time with C#。
在实践中,这种方法不太方便,因为用户设置文件的路径取决于您的应用程序的版本号,并且在您更改版本时不会传递到更新的版本。
我想为用户设置创建一个 WPF window,并将控件绑定到 Properties.Settings.Default 中定义的用户设置。 听起来很简单,就像几乎所有应用程序中所做的一样。然而,我似乎无法实现双向绑定,即控件显示值,但用户输入未写回设置对象。 这是带有 canvas 的 XAML 的一部分,它定义了数据上下文并包含一些控件。
<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:类型 = 布尔值,范围 = 用户,值 = 假 测试文本:类型 = 字符串,范围 = 用户,值 =“测试”
如何进行数据绑定,以便将对控件值的更改写入设置的绑定属性?
像
这样的表达<Properties:Settings/>
将创建设置的新实例 class。
为了绑定到命名空间 YourApplication.Properties
中 Settings
class 的静态 Default
属性,您需要一个适当的 XAML 命名空间声明和适当的绑定表达式,括号中包含静态 属性 路径。
您还应该考虑使用合适的布局面板。 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()
方法使设置在关闭您的应用程序之前的某个时间保持不变。参见 How To: Write User Settings at Run Time with C#。
在实践中,这种方法不太方便,因为用户设置文件的路径取决于您的应用程序的版本号,并且在您更改版本时不会传递到更新的版本。