gpt4 book ai didi

mvvm - MVVM:在Windows 8中使用键盘处理列表项导航

转载 作者:行者123 更新时间:2023-12-03 10:48:56 27 4
gpt4 key购买 nike

我完全不熟悉Windows 8开发,现在遇到使用MVVM Light混合触摸和键盘导航的问题。

所以,我有个 View 模型的列表,在网格 View 和只要选择其中的一个,导航到选定的 View 模型被激活。触摸或鼠标都可以很好地工作,但是使用键盘可能会造成困惑。确实,自然的行为是当我要显示项目时使用箭头导航列表并按Enter,但是在这里,当仅使用箭头键更改项目时,导航将被激活,这确实使用户感到困惑。

那么,如何通过触摸和鼠标以及组合选择和键盘输入键来激活导航呢?

这是我使用的代码。

ViewModel:

public ReleaseViewModel SelectedRelease
{
get
{
return selectedRelease;
}
set
{
if(selectRelease != value)
{
selectedRelease = value;
}

// Navigation code here
}
}

看法:
<GridView
ItemsSource="{Binding Releases}"
ItemTemplate="{StaticResource ReleaseTemplate}"
ItemContainerStyle="{StaticResource GridViewItemStyle}"
Grid.ColumnSpan="2"
Grid.Row="2"
Padding="116,0,40,46"
SelectedItem="{Binding SelectedRelease, Mode=TwoWay}"/>

最佳答案

我认为,使用MVVM模式进行编码并不意味着应该在模型中完成所有与代码相关的事情。与UI行为相关的操作(如导航)仍应通过使用控件中的可用事件在 View (后置代码)中完成。像GridView的事件一样,鼠标和键盘事件也是如此。

许多人可能对此并不认同,但是在WPF和Silverlight中使用MVVM模式工作了几年之后,我必须说UI行为( View )与控件的逻辑/功能(模型)之间的良好结合,您还将被迫将一些仅与用户界面相关的内容放到背后的代码中。至少,这是我的看法。

您可以做的是创建一个继承GridView的类(我们称之为MyDataGrid)。
然后,您可以使用OnKeyDown覆盖并在按Enter时使导航进入vertica。
实际上,您可以按照自己的意愿使MyDataGrid外观和表现为“开箱即用”,因此,如果要在应用程序(或另一个应用程序)中的另一个位置使用相同的网格行为,则无需额外的代码。

关于mvvm - MVVM:在Windows 8中使用键盘处理列表项导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com