来自Settings.settings变量的WPF触发器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来自Settings.settings变量的WPF触发器相关的知识,希望对你有一定的参考价值。
我将bool
变量添加到我的Settings.settings
文件中以存储用户配置首选项:
在代码背后,我正在改变这种方式:
Properties.Settings.Default.autoCheckForUpdates = true;
是否有可能使用bool
将此trigger
var添加到我的对照XAML
?
答案
下面显示的DataTrigger有效。您不需要具有属性更改通知的视图模型,因为Settings
类已实现INotifyPropertyChanged。
xmlns:properties="clr-namespace:YourAppNamespace.Properties"
...
<DataTrigger Binding="{Binding Path=(properties:Settings.Default).autoCheckForUpdates}"
Value="True">
<Setter .../>
</DataTrigger>
另一答案
正如所承诺的那样,矫枉过正的版本对你的问题没有意义,但可能会以另一种方式帮助你:一个带有INotifyPropertyChanged的简单视图模型。我将用一些绑定来扩展示例。
你的viewmodel:
public class SettingsViewModel : INotifyPropertyChanged
{
private bool _autoUpdate;
public SettingsViewModel()
{
//set initial value
_autoUpdate = Properties.Settings.Default.autoCheckForUpdates;
}
public bool AutoCheckForUpdates
{
get { return _autoUpdate; }
set
{
if (value == _autoUpdate) return;
_autoUpdate= value;
Properties.Settings.Default.autoCheckForUpdates = value;
Properties.Settings.Default.Save();
OnPropertyChanged();
}
}
//the INotifyPropertyChanged stuff
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
在您的XAML背后的代码中:
public SettingsWindow()
{
InitializeComponent();
this.DataContext = new SettingsViewModel();
}
现在,在您的XAML中,您可以通过文本框绑定到此属性,例如:
<CheckBox IsChecked="{Binding AutoCheckForUpdates}"/>
以上是关于来自Settings.settings变量的WPF触发器的主要内容,如果未能解决你的问题,请参考以下文章
查看 Properties.Settings.Default 变量