在Silverlight 4 Datagrid上实现双击事件 [英] Implementing the double-click event on Silverlight 4 Datagrid
本文介绍了在Silverlight 4 Datagrid上实现双击事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试过以下操作:
< data:DataGrid x:Name =dgUserRolesAutoGenerateColumns =FalseMargin =0Grid.Row = 0ItemsSource ={Binding Path = SelectedUser.UserRoles}IsReadOnly =False>
< data:DataGrid.Columns>
< data:DataGridTemplateColumn Header =>
< data:DataGridTemplateColumn.CellTemplate>
< DataTemplate>
< Button Width =20Height =20Click =Button_ClickCommand ={Binding EditRoleClickedCommand}CommandParameter ={Binding SelectedRole}/>
< / DataTemplate>
< / data:DataGridTemplateColumn.CellTemplate>
< / data:DataGridTemplateColumn>
< data:DataGridTextColumn Header =Role NameBinding ={Binding RoleName}/>
< data:DataGridTextColumn Header =Role CodeBinding ={Binding UserroleCode}IsReadOnly =True/>
< data:DataGridCheckBoxColumn Header =UDFM ManagedBinding ={Binding RoleIsManaged}IsReadOnly =True/>
< data:DataGridCheckBoxColumn Header =UDFM Role AssignedBinding ={Binding UserroleIsUdfmRoleAssignment}IsReadOnly =True/>
< data:DataGridTextColumn Header =Source UserBinding ={Binding SourceUser}IsReadOnly =True/>
< / data:DataGrid.Columns>
< / data:DataGrid>
正如你所看到的,我尝试将命令挂在那里,而不是在我的查看模型
寻找一个很好的选择。
解决方案
,Button.Command不用于双击。它也可以与单击一起工作。
你需要这样改变。 ElementName = dgUserRoles,Path = DataContext。
Command ={Binding ElementName = dgUserRoles,Path = DataContext.EditRoleClickedCommand}
Any good soul have an example of implementing the "Command Pattern" introduced by Prism on a double click event in a Silverlight 4.0 DataGrid?
I tried the following:
<data:DataGrid x:Name="dgUserRoles" AutoGenerateColumns="False" Margin="0" Grid.Row="0" ItemsSource="{Binding Path=SelectedUser.UserRoles}" IsReadOnly="False">
<data:DataGrid.Columns>
<data:DataGridTemplateColumn Header="">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Width="20" Height="20" Click="Button_Click" Command="{Binding EditRoleClickedCommand}" CommandParameter="{Binding SelectedRole}" />
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
<data:DataGridTextColumn Header="Role Name" Binding="{Binding RoleName}" />
<data:DataGridTextColumn Header="Role Code" Binding="{Binding UserroleCode}" IsReadOnly="True"/>
<data:DataGridCheckBoxColumn Header="UDFM Managed" Binding="{Binding RoleIsManaged}" IsReadOnly="True" />
<data:DataGridCheckBoxColumn Header="UDFM Role Assigned" Binding="{Binding UserroleIsUdfmRoleAssignment}" IsReadOnly="True" />
<data:DataGridTextColumn Header="Source User" Binding="{Binding SourceUser}" IsReadOnly="True" />
</data:DataGrid.Columns>
</data:DataGrid>
As you see I did try to hook up the Command there and it is not firing the event in my View Model.
Looking for a good alternative.
解决方案
First, Button.Command is not for double-click. It will work with single click as well.
You need to change like that. ElementName=dgUserRoles, Path=DataContext.
Command="{Binding ElementName=dgUserRoles, Path=DataContext.EditRoleClickedCommand}"
这篇关于在Silverlight 4 Datagrid上实现双击事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文