Я относительно новичок в программировании, и я не могу найти решение своей проблемы после нескольких часов и часов исследований. Я нахожусь в приложении silverlight, и я хочу общаться между двумя кодами за просмотром.Связь между представлениями с зависимым свойством
У меня есть два разных вида, отображаемых в одном, каждый из этих представлений имеет модель представления и, конечно, код позади, и в одном из этих представлений у меня есть кнопка, и когда я нажимаю на эту кнопку, я хочу начать метод для второго кода позади, чтобы повлиять на отображение.
Чтобы решить мою проблему, и после некоторых исследований, я думаю, что я должен использовать свойство зависимостей, так вот что я сделал:
На первом коде позади моей точки зрения я зарегистрировал свойство зависимостей с помощью метода если изменение свойства:
//i registered here my property, in the code behind my view "P_Recherche"
public static readonly DependencyProperty BoolClickDemandeProperty = DependencyProperty.Register("Customer", typeof(bool),
typeof(P_Recherche), new PropertyMetadata(false, OnCustomerChangedCallBack));
public bool Customer
{
get { return (bool)GetValue(BoolClickDemandeProperty); }
set { SetValue(BoolClickDemandeProperty, value); }
}
private static void OnCustomerChangedCallBack(
DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
P_Recherche c = sender as P_Recherche;
if (c != null)
{
c.OnCustomerChanged();
}
}
//Here is the method/code that i want to start after a "call" (in reality after an update of my boolean) of my other view
protected virtual void OnCustomerChanged()
{
bool testDemande = viewModel.ClickDemande();
if (testDemande)
{
this.posts.DataContext = new vm_Demande();
MinimizeDemandeCall();
MinimizeFamilleCall();
MaximizePostCall();
}
}
и на втором взгляде, в коде позади, я объявил свойство моего свойства зависимостей, как это:
public bool Customer
{
get { return (bool)GetValue(P_Recherche.BoolClickDemandeProperty); }
set { SetValue(P_Recherche.BoolClickDemandeProperty, value); }
}
И я использовать его, например, в случае нажатия кнопки, где я изменить значение свойства для того, чтобы начать свой метод, который я объявленный когда я зарегистрировал свойство зависимостей:
private void BtNewDemande_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Customer = true;
}
Когда я нажимаю на этом у меня есть exeption как «свойство зависимости не может быть установлено на объект типа» (извините, что у VS2013 нет на английском), поэтому я думаю, что я что-то пропустил ... но я не могу найти решение моей проблемы после всего этого времени, что я потратил ... большое спасибо за вашу помощь! и я приношу свои извинения за плохой английский :)
вы можете достичь того же, если применить MVVM должным образом в вашем приложении. Любая причина, по которой вы не используете команды для обработки события click в вашей модели просмотра?Вы можете использовать службу сообщений для уведомления других режимов просмотра о событиях. – Zafar
Спасибо за ваш ответ, я был безнадежен со вчерашнего дня, самый простой способ, и после того, как я попробовал, он работает очень хорошо, будет использовать мессенджер (у меня есть MVVM Light), но мой босс хочет удалить посланника из приложения, так что Я пытаюсь найти новое решение. – Nimp