无法将值与命令参数绑定

Cannot bind value with command parameter

我需要从 SubmitCommand 中的 TextBox 标签获取 Text 值 但我只得到一个空值。请帮我找出我需要做什么才能在 MessageBox.

中显示文本
<UserControl>
   <Grid>
      <StackPanel
         Grid.Row="1"
         Grid.Column="1"
         Margin="0"
         FocusManager.IsFocusScope="true">
         <TextBox
            Name="linkTb"   
            DataContext="{Binding SelectedSite}"                  
            IsManipulationEnabled="True"
            TabIndex="0" />
         <StackPanel                    
            Orientation="Horizontal">
            <Button
               x:Name="submitButton"                        
               Command="{Binding SubmitCommand}"
               CommandParameter="{Binding SelectedSite}"
               Content="Submit"/>
   </Grid>
</UserControl>

这里我无法获取 TextBox:

的文本
public class LoginViewModel : MainViewModelBase
{
   private string selectedSite;
   public LoginViewModel(NavigationManager navigationManager) : base(navigationManager)
   {
      SubmitCommand = new RelayCommand(obj => Submit());
   }
   public RelayCommand SubmitCommand { get; set; }
   public string SelectedSite
   {
      get { return selectedSite; }
      set
      {
         selectedSite = value;
      }
   }
   public void Submit()
   {
      MessageBox.Show(SelectedSite);
      NavigationManager.Navigate(NavigationKeys.Main);
   }
}

此屏幕截图显示了我的空白 MessageBox,其中应包含文本:

绑定 Text 属性 并将 UpdateSourceTrigger 设置为 PropertyChanged 为源 属性 (SelectedSite) 设置每次击键:

<TextBox
    Name="linkTb"   
    Text="{Binding SelectedSite, UpdateSourceTrigger=PropertyChanged}"                  
    IsManipulationEnabled="True"
    TabIndex="0" />

由于 TextBox 应该更新源 属性,因此无需将其作为参数传递给命令,因此您可以删除它:

CommandParameter="{Binding SelectedSite}"