снова мне нужна твоя помощь.У меня 3 WPF UserControl.2-й использует 1-й в качестве шаблона, а 3-й использует 2-й.
, в первом у меня есть флажок.Моя цель - вызывать метод в 3-м элементе UserControl всякий раз, когда установлен флажок в первом элементе UserControl.
Я передаю значение из флажка через 3 элемента UserControls следующим образом:
public bool IsCameraChecked
{
get { return (bool)GetValue(IsCameraCheckedProperty); }
set { SetValue(IsCameraCheckedProperty, value); }
}
public static readonly DependencyProperty IsCameraCheckedProperty = DependencyProperty.Register(nameof(IsCameraChecked), typeof(bool), typeof(ReplayController), new PropertyMetadata(false));
и в XAML я делаю это для флажка в первом UserControl:
<CheckBox x:Name="ckbCamera" Grid.Column="2" Grid.Row="1" Click="ckbActiv_Clicked" Margin="10,8,-10,6" IsChecked="{Binding ElementName=_this,Path=IsCameraChecked, Mode=TwoWay}"/>
и повторяю то же самое для второго и третьего UserControl.
пока все работает так, как должно бытьесли я вызываю / ckeck bool IsCamerChecked из третьего UserControl, он дает мне точное значение флажка (true или false)
Проблема в том, что теперь я не могу ее получитьработать с OnProperty изменить.Я хочу вызывать метод из 3-го UserControl всегда, когда IsCameraChecked равен true .
это то, что я делал в последнем 3-м UserControl:
public bool IsCameraChecked
{
get { return (bool)GetValue(IsCameraCheckedProperty); }
set
{
SetValue(IsCameraCheckedProperty, value);
_isConnected = value;
OnPropertyChanged();
}
}
/// <summary>
/// Called when any property changes.
/// </summary>
public event EventHandler PropertyChanged;
protected void OnPropertyChanged()
{
EventHandler handler = PropertyChanged;
if (handler != null)
handler(this, EventArgs.Empty);
}
public static readonly DependencyProperty IsCameraCheckedProperty = DependencyProperty.Register(nameof(IsCameraChecked), typeof(bool), typeof(TWDebugRecorder), new PropertyMetadata(false));
к сожалению, значение IsCameraChecked проверяется только, если я вызываю его напрямую из любого метода, но мне нужно, чтобы при проверке chekcbox в 1-м UserControl значение IsCameraChecked в третьем UserControl становятся true и уведомлением, если это значение изменяется.Я надеюсь, вы поняли, что я имею в виду.Заранее спасибо:)
ОБНОВЛЕНИЕ Найдено решение: в 3-м UserControl я изменил код на:
public bool IsCameraChecked
{
get { return (bool)GetValue(IsCameraCheckedProperty); }
set
{
SetValue(IsCameraCheckedProperty, value);
_isConnected = value;
}
}
protected static void OnPropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
TWDebugRecorder temp = source as TWDebugRecorder;
// here comes my method I wanted to call
}
public static readonly DependencyProperty IsCameraCheckedProperty = DependencyProperty.Register(nameof(IsCameraChecked), typeof(bool), typeof(TWDebugRecorder), new PropertyMetadata(false, OnPropertyChanged));