【问题标题】:How to trigger PreparingCellForEdit event from a (Edit)button click in Silver light 4如何从 Silver light 4 中的(编辑)按钮单击触发 PreparingCellForEdit 事件
【发布时间】:2011-09-06 11:20:57
【问题描述】:
我在 Silverlight 4 中有一个包含 3 列的数据网格以及一个包含“编辑/应用”按钮的列。
行单元格最初呈现为纯文本,我需要在编辑模式下将它们更改为组合框。
单击任意行中的“编辑”按钮后。我需要将其中一行中的文本块(这是我的 Cell 模板)更改为 ComboBox(这是我的 Cell Editing 模板)
问题是我如何通过单击每一行的编辑按钮而不是双击该行来促进这一点。
谢谢,
维杰
【问题讨论】:
标签:
wpf
silverlight
mvvm
wpfdatagrid
caliburn.micro
【解决方案1】:
-
第一种方式
将文本块放在组合框(具有折叠可见性的组合框)的顶部。在编辑控件之间切换可见性(组合 - 可见/文本块 - 折叠)并将文本块中的文本属性绑定到组合中的选定值。
-
第二种方式
仅放置 IsReadOnly 属性设置为 True 的组合框。在编辑时将 IsReadOnly 设置为 false,在保存时将其设置回 true。*
-
第三种方式
将数据网格设为只读并将数据表单绑定到它。数据表单包含编辑/保存/取消按钮。
如果您需要示例,请告诉我,我会尽快写一个。
不确定这是否符合您的预期。如果没有,请忽略它。我有可能误解了这个问题。
-
另一个答案
另一个答案是使用绑定在 Edit 按钮的 Command 属性上的 DelegateCommand,它可以包含一个参数(行号)。这是如果您使用的是 MVVM 模式。在 ViewModel 中,您可以编辑选定的行。
【解决方案2】:
经过一番搜索/尝试后,我能够通过单击按钮在显示和编辑模式之间切换(按钮放置在每一行中)。
下面发布的是示例代码,它有助于对网格中的一个单元格进行此切换,它利用两个布尔属性 ShowDefaultTemplate 和 ShowEditableTemplate ,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>
谢谢,
维杰