如何在 windows store 8.1 MVVM 应用程序中添加命令行为
Posted
技术标签:
【中文标题】如何在 windows store 8.1 MVVM 应用程序中添加命令行为【英文标题】:How to add Command Behavior in windows store 8.1 MVVM application 【发布时间】:2014-06-21 11:39:14 【问题描述】:我想在新的 windows phone 8.1 AutoCompleteBox 控件的 TextChange 事件上调用命令。我正在使用 MVVM Light。
【问题讨论】:
那么您可以在 Windows 8.1 和 Windows Phone 8.1 中使用 AutoCompleteBox 了吗?我的 Visual Studio 不允许我在 Windows 8.1 中使用它,因为 AutoCompleteBox 被定义为面向 Windows Phone 8.1。你是怎么解决这个问题的? 【参考方案1】:在新的 Windows Store 8.1 应用程序中,有一个新的 SDK Behavior SDK 用于在应用程序中添加行为。默认情况下不添加,您必须在项目中添加此扩展。下面是如何在你的项目中添加这个扩展。
从列表中安装 Behavior SDK。
现在在您的 XAML 页面中,将以下命名空间添加到能够在 ViewModel 上调用 ICommand 的 InvokeActionCommand
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
DataContext="Binding AutoSuggestionBoxExample, Mode=OneWay, Source=StaticResource Locator"
...
这里是代码 XAML 代码,用于在自动完成框的 textchange 事件上调用命令。
<AutoSuggestBox Text="Binding SearchText,Mode=TwoWay" ItemsSource="Binding
Suggesstions">
<AutoSuggestBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="Binding"/>
</DataTemplate>
</AutoSuggestBox.ItemTemplate>
<i:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="TextChanged">
<core:InvokeCommandAction Command="Binding SearchChanged">
</core:InvokeCommandAction>
</core:EventTriggerBehavior>
</i:Interaction.Behaviors>
</AutoSuggestBox>
以下是我在 ViewModel 中的 RelayCommand
private RelayCommand _searchChanged;
/// <summary>
/// Gets the SearchChanged.
/// </summary>
public RelayCommand SearchChanged
get
return _searchChanged
?? (_searchChanged = new RelayCommand(
() =>
IList<string> sugg = new List<string>();
for (int i = 0; i < 25; i++)
sugg.Add(SearchText + " 1" + i);
sugg.Add(SearchText + " 2" + i);
Suggesstions = sugg;
));
希望这有助于详细信息,请参阅以下链接。 Windows 8.1 Behavior SDK: How to use InvokeAction
【讨论】:
我想知道你为什么需要一个命令。您可以在 SearchText 的 Set 方法中更新 itemsource。没有? @Kajzer 如果您没有使用 MVVM 灯,只需在您的 windows phone 8.1 Rt 移动应用程序中添加一个新的视图类型(基本页面)。 Visual Studio 2013 会自动在你的项目中添加 RelayCommand【参考方案2】:标记的答案肯定是正确的,它帮助我发现了 Behavior SDK;但是,行为 SDK 似乎已经在 VS 2015 CTP 中本地安装,而不是作为扩展。此外,要让通用应用程序使用 Behavior SDK,您必须:
-
用鼠标右键单击项目的 References 文件夹,然后选择 Add Reference...。 参考管理器对话框打开。
选择左侧的 Windows Phone 8.1 标签或 Windows 8.1 标签,具体取决于您要更新的项目类型。
选择扩展程序子标签。
在右侧,选中 Behavior SDK (XAML)。
在通用项目的解决方案中,Shared 项目可以像任何其他项目一样使用 Behavior SDK;但是,它没有任何 References 文件夹,因此您必须简单地添加对所有目标平台项目的引用,而不是使用前面的步骤;例如,您的 .Windows 和 .WindowsPhone 项目。
您必须定义的 XAML 命名空间仍然相同:
<UserControl ...
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
...>
【讨论】:
以上是关于如何在 windows store 8.1 MVVM 应用程序中添加命令行为的主要内容,如果未能解决你的问题,请参考以下文章
Windows Store的Windows 8.1紧急应用程序是否可行?
在Windows Phone 8.1模拟器上从Store安装应用程序时出现错误80070002
Windows Store Metro APP如何适配屏幕大小
从 Windows Store App 中的 WebView 捕获到自定义协议的导航
如何将 Windows 商店中的 Windows Phone 应用程序(8.1 XAML)迁移到 8.1 Silverlight?