/ A ligação do botão / usercontrol não responde ao comando relay no mainviewmodel - c #, wpf, mvvm, relaycommand

Ligação do botão usercontrol não está respondendo ao relaycommand no mainviewmodel - c #, wpf, mvvm, relaycommand

Eu tenho um MainWindow vinculado ao seu mainViewModel. dentro da MainWindow eu tenho um usercontrol defind como este

<vm:StatPanel DockPanel.Dock="Right" DataContext="{Binding Source={StaticResource viewModel}}" Loaded="StatPanel_Loaded" />

dentro desse usercontrol eu tenho um datagrid com botões. O objetivo é quando os botões são clicados para alterar uma grade de dados no xaml da MainWindow. é assim que meu datagrid de controle de usuário se parece

<Button Content="{Binding Path=sector}" Command="{Binding Path=filterGridCommand}"></Button>

quando executo o aplicativo, recebo o seguinte erro.

System.Windows.Data Error: 40 : BindingExpression path error: "filterGridCommand" property not found on "object" ""mdSectorDetail" (HashCode=42410114)". BindingExpression:Path=filterGridCommand; DataItem="mdSectorDetail" (HashCode=42410114); target element is "Button" (Name=""); target property is "Command" (type "ICommand")

Eu estou usando uma retransmissão de comando que está localizada no MainViewModel. Meu problema é que não sei como referenciar esse mainViewModel, tentei várias das soluções sugeridas, como a seguinte

CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type }}}"

Por favor, todas as sugestões serão úteis. Obrigado.

Respostas:

1 para resposta № 1

Você pode usar bisbilhotar para descobrir qual é o seu DataContext de Button. Eu acho que no seu caso está errado DataContext. Se você me der todo o código do UserControl, escreverei um lance de dados adequado.


0 para resposta № 2

Eu uso uma interface "marcador" vazia para essas coisas.

public interface IMyCommandDataContextHelper {}

o controle / janela que possui o datacontext que eu quero alcançar com a fonte relativa precisa implementar a interface vazia.

 public partial class MainWindow : IMyCommandDataContextHelper

então eu posso facilmente escrever meu xaml com fonte relativa

{Binding Path=DataContext.filterGridCommand, RelativeSource={RelativeSource AncestorType={x:Type local:IMyCommandDataContextHelper}}}

ps: As propriedades devem ser PascalCase :)

public ICommand FilterGridCommand {get{...}}