C# 通过样式将命令指定给网格中的一组按钮
在C# 通过样式将命令指定给网格中的一组按钮,c#,xaml,silverlight,windows-phone-8,C#,Xaml,Silverlight,Windows Phone 8,在silverlight中,是否可以将相同的命令分配给网格样式中的一组按钮?或者将其分配到公共位置,而不是重复 我的意思是像使用这个- <Style TargetType="Button"> <Setter Property="Command" Value="{Binding Command1}"/> </Style> 而不是- <Button Command="{Binding Command1}"/> <Button Com
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}"/>
...
这是可能的。通过一种简单的方式,您可以将样式添加到资源中
,并将其用作静态资源
。假设Command1
属于ViewModel
,您将绑定到窗口。如果没有,请提供命令1的正确路径以正确绑定它
<Window.Resources>
<Style x:Key="buttonCommandStyle" TargetType="Button">
<Setter Property="Command" Value="{Binding Path=DataContext.Command1}" />
</Style>
</Window.Resources>
这是可能的。通过一种简单的方式,您可以将样式添加到资源中
,并将其用作静态资源
。假设Command1
属于ViewModel
,您将绑定到窗口。如果没有,请提供命令1的正确路径以正确绑定它
<Window.Resources>
<Style x:Key="buttonCommandStyle" TargetType="Button">
<Setter Property="Command" Value="{Binding Path=DataContext.Command1}" />
</Style>
</Window.Resources>
你要找的是那个
绑定
将针对每个项进行评估,因此您有几种提供命令实例的方法:
- 您可以将相同的命令实例作为公共属性放置在每个itemInstance中
- 您可以为
绑定设置一个源或相对源,以便根据ItemsControl
的DataContext
对其进行评估,而不是针对每个项:{Binding Path=DataContext.Command1,ElementName=MyItemsControl}
您正在寻找的是
绑定
将针对每个项进行评估,因此您有几种提供命令实例的方法:
- 您可以将相同的命令实例作为公共属性放置在每个itemInstance中
- 您可以为
绑定设置一个源或相对源,以便根据ItemsControl
的DataContext
对其进行评估,而不是针对每个项:{Binding Path=DataContext.Command1,ElementName=MyItemsControl}
…然后他不得不重复令人厌恶的风格分配。如果未指定源,则始终根据DataContext属性计算绑定路径。在Setter中使用绑定会导致XamlParseException@BellsSilverLight 5中引入了Setter中的绑定。你确定你的绑定字符串Source
和Path
正确吗?他使用的是windowsPhone silverlight版本,该版本不允许silverlight 5功能。@Martin我没有注意到windowsPhone-8
标记……然后他不得不重复样式分配。如果未指定源,则始终根据DataContext属性计算绑定路径。在Setter中使用绑定会导致XamlParseException@BellsSilverLight 5中引入了Setter中的绑定。您确定您的绑定字符串Source
和Path
正确吗?他使用的是windowsPhone silverlight版本,不允许使用silverlight 5功能。@Martin我没有注意到windowsPhone-8
标记。
<ItemsControl x:Name="MyItemsControl" ItemsSource="{Binding MyButtonItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Command="{Binding Command1}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>