我使用DataGridColumn
类型的编辑元素创建了自定义DGNumericColumn
(NumericUpDown
)(取自扩展WPF工具包)
<k:DataGrid ItemsSource="{Binding Profiles}"
SelectedIndex="{Binding SelectedProfile}">
<k:DataGrid.Columns>
<k:DGNumericColumn Binding="{Binding Depth}"/>
.
.
.
我想要的是(每个人都希望从datagrid :)),例如,更新ViewModel中的Depth
属性,方式类似于NumericUpDown
控件时的情况不是“内部”DataGrid
,例如当控件的值发生变化时,不仅当单元格发生变化时(CellEditEnding
事件)。我认为以下可能会奏效,但事实并非如此。
<k:DataGrid ItemsSource="{Binding Profiles}"
SelectedIndex="{Binding SelectedProfile}">
<k:DataGrid.Columns>
<k:DGNumericColumn>
<k:DGNumericColumn.EditingElementStyle>
<Style TargetType="j:NumericUpDown">
<Setter Property="Value" Value="{Binding Depth}"/>
<Setter Property="Maximum" Value="10.0"/>
</Style>
</k:DGNumericColumn.EditingElementStyle>
</k:DGNumericColumn>
.
.
.
请记住,样式中的最大阈值有效,并且在Visual Studio的输出区域中未报告任何绑定问题。如何在细胞失去焦点时解决属性变化的问题?
答案 0 :(得分:0)
好的,解决了。
<k:DataGrid ItemsSource="{Binding Profiles}"
SelectedIndex="{Binding SelectedProfile}">
<k:DataGrid.Columns>
<k:DataGridTemplateColumn>
<k:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Depth}"/>
</DataTemplate>
</k:DataGridTemplateColumn.CellTemplate>
<k:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<l:NumericUpDown Value="{Binding Depth}"/>
</DataTemplate>
</k:DataGridTemplateColumn.CellEditingTemplate>
</k:DataGridTemplateColumn>
.
.
.