【发布时间】:2017-11-10 09:28:18
【问题描述】:
我正在用 C# 和 WPF 设计一个简单的应用程序,其中包含多个在单击时会改变颜色的按钮。
每个单独的按钮都会独立地将颜色变为红色(第一次单击),然后变为绿色(第二次单击)。
我正在寻找一种方法来使这些更改在应用程序运行之间持续存在。 换句话说,如果 1 个按钮设置为绿色,1 个按钮设置为红色,我希望它们保持颜色(除非我更改它),无论我打开和关闭应用程序多少次。我可以使用的代码示例非常受欢迎。非常感谢任何帮助或代码示例。谢谢!
这是 WPF:
<Button x:Name="btn0" Focusable="False" Margin="277,100,173,148" Click="btn0_Click" Content="access"/>
<Button x:Name="btn1" Focusable="False" Margin="189,100,253,148" Click="btn1_Click" Content="access"/>
这是代码(我知道它有点乱):
namespace WpfApp7
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private bool _IsOn;
public bool IsOn
{
get
{
return _IsOn;
}
set
{
_IsOn = value;
btn0.Background = _IsOn ? Brushes.Green : Brushes.Red;
}
}
private void btn0_Click(object sender, RoutedEventArgs e)
{
IsOn = !IsOn;
}
private bool _IsOn1;
public bool IsOn1
{
get
{
return _IsOn1;
}
set
{
_IsOn1 = value;
btn1.Background = _IsOn1 ? Brushes.Green : Brushes.Red;
}
}
private void btn1_Click(object sender, RoutedEventArgs e)
{
IsOn1 = !IsOn1;
}
}
}
【问题讨论】:
-
如果您需要持久状态,请在退出时保存(应用程序外部某处)当前值并在下次运行时读取和恢复值
-
wpf 中有一个
ToggleButton,使用它的IsChecked并更改颜色with the trigger。以某种方式使用绑定和序列化/反序列化源(请参阅this)是实现您想要的正确方法。
标签: c# wpf button boolean persistent-data