我有一个longlistselector,其模板需要在应用栏按钮单击时更改。 Appbar模板也随按钮单击而更改。
在 View 的.cs文件内部,使用按钮单击非常简单

 private void ApplicationBarIconButton_Click_1(object sender, EventArgs e)
    {
     DataTemplate dt;
            dt = (DataTemplate)this.Resources["NewTemplateSelection"];  //new template to apply
            list.ItemTemplate = dt;

           this.ApplicationBar = this.Resources["selectmodeAppBar"] as ApplicationBar;  //new
template for app bar
}

两个模板都在page.resource内。
我正在尝试通过MVVM Light使用MVVM模式。但无法在ViewModel中创建命令
我是mvvm的新手,
private void ApplicationBarIconButton_Click_1(object sender, EventArgs e)
    {
        var vm = (ViewModel)DataContext;
        vm.SelectionCommand.Execute(null);
      }

内部 View 模型
SelectionCommand = new RelayCommand(() =>
        {

           // DataTemplate dt;

           //  dt = (DataTemplate)  email.Resources["ViewEmailTemplateSelection"];
           //  email.list.ItemTemplate = dt;
           //  email.ApplicationBar.IsVisible = false;

           //email.ApplicationBar = email.Resources["selectmodeAppBar"] as ApplicationBar;
        //}
        });

有没有一种方法,我试图在 View 模型中将longlistselector的Itemtemplate与字符串绑定(bind)
但我认为不允许在WP8中绑定(bind)staticresource。
请提出一些在Viewmodel中执行操作的方法。

最佳答案

AppBarUtils应该为您做到这一点,否则,它应该给您一些想法。 AppBarUtils使您可以将不同的AppBar绑定(bind)到ViewModel的值:

退房:

AppBarUtils

AppBarUtils (new home)

Pro WP8 AppBar Management with AppBarUtils

关于c# - 从Viewmodel更改应用栏模板和长列表选择器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24796762/

10-11 14:14