我在Silverlight 4中有一个包含3列的数据网格以及一个包含“编辑/应用”按钮的列。
行单元格最初呈现为纯文本,我需要在编辑模式下将它们更改为Comboboxes。
单击任何行中的“编辑”按钮。我需要在其中一行中将文本块(这是我的单元格模板)更改为ComboBox(这是我的单元格编辑模板)
问题是如何在单击每行的“编辑”按钮时进行此操作,而不是双击该行。
谢谢, 维杰
答案 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>
谢谢, 维杰