[英]WinRT application login by pressing Enter key with MVVM light
我正在開發一個應用程序,用戶需要在其中輸入用戶名和密碼才能登錄。
我正在使用 MVVM 燈光框架將我的視圖與我的視圖模型分開。 現在我的視圖上有一個按鈕,在相應的視圖模型上捕獲了點擊事件。
如果用戶按下回車按鈕,他們也可以登錄,我也希望有可能。 在 WPF 中,您可以將按鈕設置為 IsDefault,但在 WinRT 中似乎不可能。
我怎樣才能做到這一點?
我認為您可以將此代碼放入您的視圖模型中並檢查是否按下了輸入鍵,然后按下時只需啟動與按下按鈕時啟動的相同方法
Windows.UI.Xaml.Window.Current.CoreWindow.KeyDown += (sender, arg) =>
{
if (arg.VirtualKey == Windows.System.VirtualKey.Enter)
{
//Your login method
}
};
根據我的評論,我不建議在視圖模型中使用 UI 代碼。 使用觸發器綁定到文本框中按鍵的命令。
<TextBox>
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<cmd:EventToCommandCommand="{Binding MyCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
請務必在您的 xaml 聲明中包含以下內容:
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="http://www.galasoft.ch/mvvmlight"
希望這可以幫助
頁面上有一個名為 OnKeyDown() 的虛擬方法,您可以覆蓋它。 這比訂閱事件更安全,更適合 MVVM。 我更喜歡將 DataContext 轉換為我的視圖模型類型並調用我想要的任何內容。
可以通過以下行為實現這一點:
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="KeyDown">
<core:CallMethodAction TargetObject="{Binding}" MethodName="Load" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
你必須參考:
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
但是,它僅適用於所有鍵。 我沒有看到任何過濾某個鍵的可能性。
有:
xmlns:i="using:WinRtBehaviors"
xmlns:b="using:Win8nl.Behaviors"
<i:Interaction.Behaviors>
<b:EventToCommandBehavior Event="Loaded" Command="LoadedCommand"/>
</i:Interaction.Behaviors>
來自紐傑特。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.