如何从(编辑)按钮触发PreparationCellForEdit事件单击Silver light 4

时间:2011-09-06 11:20:57

标签: wpf silverlight mvvm wpfdatagrid caliburn.micro

我在Silverlight 4中有一个包含3列的数据网格以及一个包含“编辑/应用”按钮的列。

行单元格最初呈现为纯文本,我需要在编辑模式下将它们更改为Comboboxes。

单击任何行中的“编辑”按钮。我需要在其中一行中将文本块(这是我的单元格模板)更改为ComboBox(这是我的单元格编辑模板)

问题是如何在单击每行的“编辑”按钮时进行此操作,而不是双击该行。

谢谢, 维杰

2 个答案:

答案 0 :(得分:1)

  • 第一路

    将文本块放在组合框的顶部(具有折叠可见性的组合框)。在编辑切换控件之间的可见性(组合 - 可见/文本块 - 折叠)并将文本属性从文本块绑定到组合中的选定值。

  • 第二路

    只将带有IsReadOnly Property的组合框设置为True。在编辑时将IsReadOnly设置为false并在保存时将其设置为true。*

  • 第三种方式

    使datagrid只读并将数据表绑定到它。数据表格包含编辑/保存/取消按钮。

    如果你需要一个例子,请告诉我,我会尽快写一个。

    不确定这是否符合预期。如果没有,请忽略它。我可能错过了这个问题。

  • 另一个答案

    另一个答案是使用在Edit按钮的Command属性上绑定的DelegateCommand,它可以包含一个参数(行号)。这是您使用MVVM模式。在ViewModel中,您可以编辑选定的行。

答案 1 :(得分:1)


经过一些搜索/尝试后,我可以通过按钮在显示和编辑模式之间切换(每行放置一个按钮)。

下面发布的是示例代码,它有助于网格中其中一个单元格的切换,它使用两个布尔属性 ShowDefaultTemplate ShowEditableTemplate ,< strong> VisibilityConverter 将布尔值转换为相应的可见性选项(可见或折叠)。

<DataTemplate>
           <StackPanel Orientation="Horizontal">
                     <TextBlock Text="{Binding XXX}" HorizontalAlignment="Center" VerticalAlignment="Center"
                                               Visibility="{Binding ShowDefaultTemplate, Converter={StaticResource visibilityConverter}}" />
                     <ComboBox HorizontalAlignment="Left"  MinHeight="24" Width="100" 


                                              ItemsSource="{Binding Source, Source={StaticResource Provider}}" 
                                              Visibility="{Binding ShowEditableTemplate , Converter={StaticResource visibilityConverter}}" 
                                              SelectedItem = "{Binding SelctedItem,Mode=TwoWay}" />

            </StackPanel>
 </DataTemplate>

谢谢, 维杰