我有以下情况。在某处有DynamicResource
颜色。此颜色决定了窗口的背景,并根据我想要选择要显示的右侧图标(明亮或黑暗)的颜色。
我想象以下场景:
我想,这应该可以使用WPF机制。问题是,我不太清楚,如何构建架构,这将进行这样的处理。
DependencyProperty
的{{1}}类,然后通过BackgroundColor
添加该颜色。这样我就可以使用DynamicResource
。PropertyChangedCallback
机制附加。怎么样?通过某种收藏?每个人都有自己的DependencyProperty?如果有更简单的方法来实现我提出的目标,我很乐意听到它:)
答案 0 :(得分:1)
您可以创建一个浅色和深色WPF Theme,然后根据当前设置为background
颜色的颜色在它们之间切换。使用此方法,WPF将处理所有图标更新。
如果您想创建自己的系统,可以使用DependencyProperty
系统来帮助您:
Background
颜色已更改:您只需将PropertyChangedCallback
处理程序添加到当前Background
属性:
static YourControl()
{
Control.BackgroundProperty.OverrideMetadata(typeof(YourControl),
new PropertyMetadata(Brushes.White, OnBackgroundChanged));
}
private static void OnBackgroundChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// The Background property value changed
}
您可以按以下格式创建一个包含string
属性的类,以便将数据绑定到每个Image.Source
属性:
"\ApplicationName;component/ImageFolderName/ImageName.FileExtension"
只要此类实现INotifyPropertyChanged
接口,您需要做的就是更改这些string
值,UI将自动使用新图标或图像进行更新。