在我的程序中,我有三种不同的UI状态(正常,成功和错误),每一个控件都可见/隐藏,启用/禁用,颜色改变,标签说不同的东西......等等.在我的代码隐藏中,我基本上希望能够说出ChangeWindowState(UI.Normal);
所以我的问题是如何最好地实现每个州的控制变更?
当然我可以手动更改代码隐藏中的控件,但我想知道是否有更好的方法使用wpf主题或样式.那么也许我可以设置窗口使用我预先定义的"错误"主题.我现在对它们并不是很了解,所以我可能会使用错误的术语,但如果有人能指出我正确的方向如何最好地做这样的事情,我将不胜感激.
谢谢!
当然,有很多方法可以解决这个问题.如果你有程序状态"对象模型",你可以使用DataTemplates和DataTriggers的某种组合.假设情况并非如此,这是另一种方法:您引用了一个窗口,所以假设您在窗口类中定义了一个"依赖属性",如下所示:
public partial class Window1 : Window { public Window1() { this.InitializeComponent(); // Insert code required on object creation below this point. } public ProgramStatus ProgramStatus { get { return (ProgramStatus)GetValue(ProgramStatusProperty); } set { SetValue(ProgramStatusProperty, value); } } // Using a DependencyProperty as the backing store for ProgramStatus. This enables animation, styling, binding, etc... public static readonly DependencyProperty ProgramStatusProperty = DependencyProperty.Register("ProgramStatus", typeof(ProgramStatus), typeof(Window1), new UIPropertyMetadata(null)); } public enum ProgramStatus { Normal, Success, Error }
现在,您可以通过直接绑定或触发器更改窗口任何元素的任何属性(包括窗口本身).以下是通过属性触发器更改窗口背景颜色的示例: