Como fazer um controle em público XAML para ser visto em outras classs

Eu estou trabalhando no aplicativo wpf fiz uma checkbox de seleção no XAML, então meu código chama uma function em uma class e nesta function há uma condição if onde está verificando se a checkbox de seleção está marcada ou não, mas a checkbox de seleção não é vista nesta aula, então como fazer isso?

Muito Obrigado

EDITAR:

Aqui estão os passos que eu fiz: Eu criei a class ViewModel sob o mesmo projeto do KinectSkeleton como mostrado: Classe ViewModel:

public class ViewModel { public bool IsChecked { get; set; } public bool is_clicked { get; set; } } 

e no KinectSkeleton eu defini uma propriedade como mostrado:

 public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register("ViewModelH", typeof(ViewModel), typeof(KinectSkeleton), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender)); public ViewModel ViewModelH { get { return (ViewModel)GetValue(ViewModelProperty); } set { SetValue(ViewModelProperty, value); } } 

e o código da checkbox de seleção e botão no KinectWindow.xaml é:

 

e no KinectSkeleton onde eu quero verificar o valor da checkbox de seleção que eu escrevo:

  if (this.ViewModelH.IsChecked == false) // if(f.is_chekced==false) { // do something } 

Agora eu quero saber o que escrever no evento is_checked da checkbox de seleção e is_clicked do botão? também há algo faltando em minhas etapas acima, como eu sinto que até agora a propriedade skin kinect não é vinculada à checkbox de seleção is_checked valor?

Usando o seguinte XML, você pode definir um controle como um campo público na class para poder acessá-lo de outras classs:

  

Agora você pode acessar o campo diretamente no código:

 if (win.myCheckBox.IsChecked.Value) { // ... } 

Concordo com a HB, porém, que usar o padrão MVVM é a melhor maneira de fazer isso. Outras partes do seu código não devem estar cientes da sua interface do usuário ou acessá-la diretamente.

EDITAR:

Com a abordagem do MVVM, você deve primeiro definir sua class de modelo de visualização:

 public class ViewModel { public bool IsChecked { get; set; } } 

Em seguida, você define uma instância dessa class como DataContext :

  • quer em código, por exemplo, construtor de janela:
 public MyWindow() { InitializeComponent(); DataContext = new ViewModel(); } 
  • ou em XAML, por exemplo, App.xaml:
      

Agora você pode vincular seu CheckBox a uma propriedade em ViewModel:

  

Tudo o que resta é passar a instância ViewModel para a sua function OnRender . Ele é armazenado na propriedade DataContext da sua janela.

EDIT 2:

BTW: Você realmente deveria ter perguntado isso antes de aceitar a resposta.

Não tenho certeza do que você está tentando tentar com a propriedade is_clicked . Para definir este sinalizador quando o botão é clicado, você precisa de um Command :

 public class CalibrateCommand : ICommand { private ViewModel viewModel; public CalibrateCommand(ViewModel viewModel) { this.viewModel = viewModel; } public void Execute(object parameter) { viewModel.IsClicked = true; } public bool CanExecute() { return true; } } 

Você adiciona uma instância desse comando ao seu modelo de visualização:

 public class ViewModel { public bool IsChecked { get; set; } public bool IsClicked { get; set; } public ICommand CalibrateCommand { get; set; } public ViewModel() { CalibrateCommand = new CalibrateCommand(this); } } 

Você liga-o ao botão assim:

  

Você não precisa lidar com nenhum evento da CheckBox e do Button , tudo é tratado pela binding.

Se você adicionou uma propriedade de dependência ao KinectSkeleton deverá vinculá-lo ao modelo de exibição:

  

Não torne a checkbox de seleção visível para o exterior, apenas passe o estado atual da checkbox de seleção para a function ou class. Considere também ligar o valor da checkbox de seleção a uma class no DataContext , os controles de access direto podem ser evitados na maior parte do tempo no WPF, consulte também o padrão MVVM .