기본 검색 텍스트 상자 -> 버튼을 구현하고 있지만 사용자가 EnterMovie 키의 Enter/Return 키를 누를 수있게하려고합니다. keyboard/pad, as How to enable enter button on keyboard on wp7?ViewModel의 RelayCommand : 호출이 ViewModel의 바운드 UI 데이터에 액세스하지 못합니다.
RelayCommand가 호출되면 검색 텍스트 상자의 내용에 대해 null 값을 얻습니다.
MVVM Light를 사용하고 있습니다.
내가 속성을 가진 뷰 모델에 바인딩하여 PhoneApplicationPage 있습니다
public class MainViewModel : ViewModelBase
{
private string _searchString;
public RelayCommand Search { get; private set; }
public RelayCommand<KeyEventArgs> SearchTextBoxKeyDown { get; private set; }
public string SearchString
{
get { return _searchString; }
set
{
if (_searchString != value)
{
_searchString = value;
RaisePropertyChanged("SearchString");
}
}
}
public MainViewModel()
{
if (IsInDesignMode)
{
// Code runs in Blend --> create design time data.
}
else
{
// Code runs "for real"
SearchTextBoxKeyDown=new RelayCommand<KeyEventArgs>((e)=>
{
if (e.Key == Key.Enter)
{
// SearchString is empty here?
Search.Execute(null);
}
});
Search = new RelayCommand(() =>
{ // invokes Search with SearchString
},
() =>
{
bool isEnabled = true;
if (string.IsNullOrWhiteSpace(SearchString)) isEnabled = false;
return isEnabled;
});
}
}
보기는 자동 완성 컨트롤에서 KeyDown 방법을 호출 할 MVVM 라이트 툴킷을 사용하여을 (그것은 Telerik 컨트롤이지만, 이 텍스트 상자처럼 보이는) 텍스트 상자 냄새 : 나는 텍스트 상자가 바인딩 무엇입니까에서 SearchString, 액세스 할 때
호출 된 코드에서 <telerikInput:RadAutoCompleteBox
InputScope="Search"
Text="{Binding SearchString,Mode=TwoWay}"
SuggestionsSource="{Binding MruSearchStrings}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<cmd:EventToCommand x:Name="searchStringTextBoxKeyDown" Command="{Binding SearchTextBoxKeyDown, Mode=OneWay}" PassEventArgsToCommand="True">
</cmd:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
</telerikInput:RadAutoCompleteBox>
, 난 그냥 널 얻을 - 난에 텍스트를 입력 한 경우에도이 그것. SearchTextBox가 ViewModel에 대한 데이터를 다시 보내 이벤트 코드에서 픽업하지 않은 것과 거의 같습니다.
내가 뭘 잘못하고 있니?
우수. 고마워. XAML을 조금 더 배웠습니다. –