如何解决无法将值与命令参数绑定
我需要从Text
中的TextBox
标记中获得SubmitCommand
值
但我只会得到一个空值。请帮助我找出在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
应该更新source属性,因此无需将其作为参数传递给命令,因此可以删除此属性:
CommandParameter="{Binding SelectedSite}"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。