通过样式将命令分配给网格中的一组按钮

时间:2016-01-29 08:35:02

标签: c# xaml silverlight windows-phone-8

silverlight中是否可以通过样式为网格中的一组按钮分配相同的命令?或者将它分配到一个公共场所而不是重复?

我的意思是使用这个 -

<Style TargetType="Button">
   <Setter Property="Command" Value="{Binding Command1}"/>
</Style>

而不是 -

<Button Command="{Binding Command1}"/> 
<Button Command="{Binding Command1}"/> 
<Button Command="{Binding Command1}"/> 
           ...
<Button Command="{Binding Command1}"/> 

2 个答案:

答案 0 :(得分:1)

有可能。您可以通过简单的方式将样式添加到$stateProvider .state('root', { url: '', abstract: true, views: { 'header': { templateUrl: '/angular/apps/backend/views/template/header.html', controller: 'AuthController' }, 'sidebar':{ templateUrl: '/angular/apps/backend/views/template/sidebar.html', controller: 'AppsController' }, 'topbar':{ templateUrl: '/angular/apps/backend/views/template/topbar.html' }, 'footer':{ templateUrl: '/angular/apps/backend/views/template/footer.html', controller: '' } }, data: { title: 'Dashboard', bodyClass: '', requiredLogin: true } }) .state('root.home', { url: '/', views: { 'main@':{ templateUrl: '/angular/apps/backend/views/inicio.html', controller: '' } }, data: { title: 'Dashboard', bodyClass: '', requiredLogin: true } }) .state('login', { url: '/', templateUrl: '/angular/apps/backend/views/login.html', controller: 'AuthController', data: { title: 'Iniciar Sesión', bodyClass: 'external-page sb-l-c sb-r-c', requiredLogin: false } }) .state('applist', { url: '/:AppPermalink', parent: "root", views: { 'main@':{ templateUrl: '/angular/apps/backend/views/appresults.html', controller: 'AppController' } }, data: { title: 'Dashboard', bodyClass: '', requiredLogin: true } }) .state('appedit', { url: '/:AppPermalink/editar/:Itemid', parent: "root", views: { 'main@':{ templateUrl: function(stateParams){return '/angular/apps/backend/views/appedit_'+stateParams.AppPermalink+'.html'}, controller: 'AppController' } }, data: { title: 'Dashboard', bodyClass: '', requiredLogin: true } }) 并将其用作Resources。假设StaticResource属于Command1,则绑定到ViewModel。如果没有,请提供Window的正确路径以正确绑定它。

Command1

然后将其用作<Window.Resources> <Style x:Key="buttonCommandStyle" TargetType="Button"> <Setter Property="Command" Value="{Binding Path=DataContext.Command1}" /> </Style> </Window.Resources>

Style
Button

答案 1 :(得分:1)

您要找的是ItemsControl

<ItemsControl x:Name="MyItemsControl" ItemsSource="{Binding MyButtonItems}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Command="{Binding Command1}"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

将针对每个项目评估Binding,因此您可以通过多种方式提供命令实例:

  • 您可以在每个itemInstance中放置相同的命令实例作为公共属性
  • 您可以为Binding设置一个来源或亲戚来源,以针对DataContext的{​​{1}}而不是针对每个项目进行评估:ItemsControl