2015-07-28 3 views
0

Мой босс загрузил элемент управления xaml, который я должен использовать в приложении. Похоже, что хорошо, но есть странная проблема с внутренней логикой - свойство CurrentColor (что мне нужно использовать в нашем приложении) определяется в control.xaml.cs файле как:Управление привязкой к другому объекту

public SolidColorBrush CurrentColor 
{ 
    get { return (SolidColorBrush)GetValue(CurrentColorProperty); } 
    set 
    { 
      SetValue(CurrentColorProperty, value); 
      ActiveColor = CurrentColor; 
    } 
} 

Я использую этот элемент управления в диалоговом окне моего (что имеет свой собственный класс вид модели) и Я пишу этот вид связывания:

CurrentColor="{Binding myOwnViewModel.ColorActualValue, Mode=Default, UpdateSourceTrigger=PropertyChanged}"> 

в myOwnViewModel.cs (который реализует INotifyPropertyChanged) у меня есть свойство

public SolidColorBrush ColorActualValue{ // here is some logic} 

Но когда я отладки приложения, я никогда не таргетировать CurrentColor - Я всегда хожу в CurrentColor от control.xaml.cs

Как я могу связать эту «третью партию» управление моим имуществом от моего ViewModel?

Возможно, это происходит потому, что (control.xaml.cs):

public static DependencyProperty CurrentColorProperty = 
      DependencyProperty.Register("CurrentColor", typeof(SolidColorBrush), typeof(ColorPickerComboBox), new PropertyMetadata(Brushes.Chocolate)); 
     public static RoutedEvent ActiveColorChangedEvent = EventManager.RegisterRoutedEvent("ActiveColorChanged", 
      RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(ColorPickerComboBox)); 

я нашел вопрос What's wrong with "DataContext = this" in WPF user controls? и удалены DataContext = this; из конструктора этого управления - но это еще не помогло

+0

Установите DataContext в Уре ViewModel, а затем удалить ViewModel из Уре заявления обязательного –

+1

Вы привязка к свойству myOwnViewModel.ColorActualValue, но в вашей модели ViewModel это имя CurrentColor. Проверьте окно вывода ошибок привязки. – GreenEyedAndy

+0

GreenEyedAndy - извините за эту ошибку Я исправил вопрос – curiousity

ответ

0

Если связывание выглядите так?

CurrentColor="{Binding ColorActualValue, Mode=Default, UpdateSourceTrigger=PropertyChanged}"> 

DataContext вашего «диалог» должен быть класс ViewModel, который содержит ColorActualValue свойство

public Dialog() 
{ 
    DataContext = new myOwnViewModel(); 
} 
+0

нет, я пробовал это. Любой способ поблагодарить вас за ответ и взглянуть на мой обновленный вопрос – curiousity

+0

Я не смог передать экземпляр myOwnViewModel для конструктора Dialog - сначала Dialog находится в другом проекте, во-вторых myOwnViewModel не является статическим классом и имеет параметры, которые не присутствуют в проекте где находится диалоговое окно. Я попытаюсь написать правильный код после InitializeComponent в том месте, где доступен myOwnViewModel (чтобы изменить элемент управления на другой с соответствующим DataContext), но я думаю, что это плохая практика. – curiousity

+0

Да, это звучит не очень хорошо. Посмотрите, как некоторые примеры приложений собраны вместе –

Смежные вопросы