首先,我基本上是一名C ++开发人员。我习惯通过元编程来编写类来自动化所有东西。今天我有了从设置与UIElements自动化同步的想法。
问题1:类似的项目是否已存在?
如果没有:我不搜索完成的解决方案,我需要想法和提示如何解决我的任务或让我远离糟糕的想法 。
起初我想要同步:
TextBox
< - > string
Checkbox
< - > bool
我的推荐人:
使用扩展程序:
public static class TextBoxSynchroniseExtension
{
public static string load(this TextBox control, string propertyName)
{
string value = Properties.Settings.Default[propertyName].ToString();
control.Text = value;
return value;
}
public static string save(this TextBox control, string propertyName)
{
string value = control.Text;
Properties.Settings.Default[propertyName] = value;
return value;
}
}
缺点:
覆盖UIElements:
(未测试的)
public partial class SyncSettingsTextBox : TextBox
{
[Description("The name for synchronise with the settings."), Category("Data")]
public string SettingsName{ get; set; }
public SyncSettingsTextBox(string settingsName) : base()
{
this.SettingsName = settingsName;
LoadFromSettings();
}
public void LoadFromSettings()
{
this.Text = Properties.Settings.Default[SettingsName].ToString();
}
public void saveToSettings()
{
Properties.Settings.Default[SettingsName] = this.Text;
}
}
通过传递属性名称和设置名称来创建通用UserControl
来存储他的孩子。
伪代码:
<StackPanel>
<SynchroniseWrapper SettingsName="Name" PropertyName="Text" >
<TextBox Text="I get overrided from Properties.Settings.Default.Name" />
</SynchroniseWrapper>
<SynchroniseWrapper SettingsName="PWD" PropertyName="Password" >
<PasswordBox />
</SynchroniseWrapper>
<SynchroniseWrapper SettingsName="AutoLogin" PropertyName="IsChecked" >
<CheckBox IsChecked="False" Content="Remember me?" />
</SynchroniseWrapper>
</StackPanel
问题2:我必须查找哪些关键字才能创建此类UserControls
。