无法将值与命令参数绑定
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}"
我需要从 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}"