Modify ObjectDataProvider

本文关键字:ObjectDataProvider Modify | 更新日期: 2023-09-27 18:16:37

我有一个应用程序,我使用一个ObjectDataProvider (App.xaml):

<Application x:Class="Example.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:src="clr-namespace:Example.Settings"
         StartupUri="MainWindow.xaml"
         Startup="Application_Startup"
         DispatcherUnhandledException="ApplicationDispatcherUnhandledException">
<Application.Resources>
    <ObjectDataProvider x:Key="odpSettings" ObjectType="{x:Type src:AppSettings}"/>
</Application.Resources>

我的班级是:

class AppSettings : INotifyPropertyChanged
{
    public AppSettings()
    {
    }
    Color itemColor = Colors.Crimson;
public Color ItemColor
    {
        get
        {
            return itemColor;
        }
        set
        {
            if (itemColor == value)
                return;
            itemColor = value;
            this.OnPropertyChanged("ItemColor");
        }
    }
public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }   

}

然后我有一个userControl,我使用那个颜色,例如:

<Border Background="{Binding Source={StaticResource odpSettings}, 
                             Path=ItemColor,Mode=TwoWay}" />

我将UserControl添加到我的主窗口,在那里我有一个ColorPicker控件,我想修改我的UserControl的边框背景颜色与ColorPicker的颜色选择。

我试过这样做:

AppSettings objSettings = new AppSettings();
objSettings.ItemColor = colorPicker.SelectedColor;

当我使用ColorPicker改变颜色时,UserControl中的颜色不会改变,我猜这是因为我正在创建类AppSettings的新实例。

有办法完成我想做的事吗?

提前感谢。

阿尔贝托。

Modify ObjectDataProvider

感谢您的评论,我使用了下一个代码:

AppSettings objSettings = (AppSettings)((ObjectDataProvider)Application.Current.FindResource("odpSettings")).ObjectInstance;

这样我就可以访问和修改属性ItemColor的值。

我也改变属性类型为SolidColorBrush。

objSettings.ItemColor = new SolidColorBrush(colorPicker.SelectedColor);
相关文章:
  • 没有找到相关文章