У меня есть приложение, в котором я использую 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>
My class is:
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 в свой MainWindow, где у меня есть элемент управления ColorPicker, и я хотел бы изменить цвет фона границы моего UserControl, выбрав цвет ColorPicker.
Я пробовал что-то вроде этого:
AppSettings objSettings = new AppSettings();
objSettings.ItemColor = colorPicker.SelectedColor;
Когда я меняю цвет с помощью ColorPicker, цвет в моем UserControl не меняется, я думаю, это потому, что я создаю новый экземпляр класса AppSettings.
Есть ли способ добиться того, что я пытаюсь сделать?
Заранее спасибо.
Альберто
Application.Current.Resources["odpSettings"] = new AppSettings();
? - person thumbmunkeys   schedule 06.08.2014Background
имеет типBrush
, а привязанное свойство имеет типColor
. - person Rohit Vats   schedule 06.08.2014