2017-08-08 42 views
0

执行我有这样的XAML代码:绑定不是在的CommandBinding

<Window.CommandBindings> 
    <CommandBinding Command="WpfApplication1:MainCommands.Search" Executed="Search"/> 
</Window.CommandBindings><Grid> 
<StackPanel> 
    <ListView ItemsSource="{Binding SearchContext}" /> 
    <TextBox Text="{Binding LastName}"> 
     <TextBox.InputBindings> 
      <KeyBinding Key="Enter" Command="{x:Static WpfApplication1:MainCommands.Search}" /> 
     </TextBox.InputBindings> 
    </TextBox> 
</StackPanel> 

搜索,方法是这样的:

private void Search(object sender, RoutedEventArgs e) 
{ 
    SearchContext = new ObservableCollection<string>(list.Where(element => element.Name == LastName).Select(el => el.Name).ToList()); 
} 

MainCommands:

public static class MainCommands 
{ 
    public static RoutedCommand Search = new RoutedCommand(); 
} 

但是,如果我按进入而焦点在文本框中时,绑定不是computet,LastName是空值。是什么原因?我怎样才能避免这种情况?或者是否可以显式调用绑定操作?

预先感谢您。

回答

0

,我可以看到你的Window是一个视图模型为它。我建议你使用MVVM并设有独立的类,你可以把所需的ICommand视图模型,并使用CommandParameterKeyBinding

<TextBox x:Name="searchBox" 
     Text="{Binding LastName}"> 
    <TextBox.InputBindings> 
     <KeyBinding Key="Enter" 
        Command="{Binding Path=SearchCommand}" 
        CommandParameter="{Binding Path=Text, ElementName=searchBox}" /> 
    </TextBox.InputBindings> 
</TextBox>