Ingragistic XamGrid:新记录是不可编辑
问题描述:
考虑,Ingragistic XamGrid:新记录是不可编辑
<igDP:XamDataGrid Name="dataGrid"
DataSource="{Binding RecordList}">
<igDP:XamDataGrid.FieldLayoutSettings >
<igDP:FieldLayoutSettings AllowAddNew="true" AddNewRecordLocation="OnTopFixed"/>
</igDP:XamDataGrid.FieldLayoutSettings>
在运行,我可以看到在网格之上的空新行。但新行中的列没有可编辑的!当我将每个字段标记为可编辑时,这些列是可编辑的。
是否有可能使添加记录功能工作,而“没有”明确标记每个字段为可编辑?
感谢您的关注。
答
您最好的选择是对的Infragistics NetAdvantage的论坛上问这个,不过话说回来......
据我所知,你想要的是一个只读数据网格(在其细胞不可编辑)有一个可编辑行添加新项...
- 添加
CellValuePresenter
针对性Style
XamDatagrid.Resources
下。 - 这将检查给定的单元值演示者是否聚焦并表示添加新行。
-
如果是这样,它会通过一些附加行为使父域可编辑。
<igDP:XamDataGrid Grid.Row="1" DataSource="{Binding}" AutoFit="True"> <igDP:XamDataGrid.Resources> <Style TargetType="{x:Type igDP:CellValuePresenter}"> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding IsFocused, RelativeSource={RelativeSource Self}}" Value="True"/> <Condition Binding="{Binding Record.IsAddRecord, RelativeSource={RelativeSource Self}}" Value="True"/> </MultiDataTrigger.Conditions> <Setter Property="local:CellValuePresenterBehavior.AllowFieldEdit" Value="True"/> </MultiDataTrigger> </Style.Triggers> </Style> </igDP:XamDataGrid.Resources> <igDP:XamDataGrid.FieldLayouts> <igDP:FieldLayout> <!-- Only show the first 4 fields to keep the display simple --> <igDP:Field Name="Key" Visibility="Visible"> <igDP:Field.Settings> <igDP:FieldSettings EditAsType="{x:Type System:String}" EditorType="{x:Type Editors:XamTextEditor}" AllowEdit="False"/> </igDP:Field.Settings> </igDP:Field> <igDP:Field Name="Value" Visibility="Visible"> <igDP:Field.Settings> <igDP:FieldSettings EditAsType="{x:Type System:String}" EditorType="{x:Type Editors:XamTextEditor}" AllowEdit="False"/> </igDP:Field.Settings> </igDP:Field> </igDP:FieldLayout> </igDP:XamDataGrid.FieldLayouts> <igDP:XamDataGrid.FieldLayoutSettings> <igDP:FieldLayoutSettings AutoGenerateFields="False" AllowAddNew="True" AddNewRecordLocation="OnTopFixed" HighlightAlternateRecords="True"/> </igDP:XamDataGrid.FieldLayoutSettings> </igDP:XamDataGrid>
而且附加的行为是如下...
public class CellValuePresenterBehavior
{
public static DependencyProperty AllowFieldEditProperty
= DependencyProperty.RegisterAttached(
"AllowFieldEdit",
typeof(bool),
typeof(CellValuePresenterBehavior),
new PropertyMetadata(false, OnAllowFieldEditChanged));
private static void OnAllowFieldEditChanged(
DependencyObject depObj,
DependencyPropertyChangedEventArgs args)
{
var cvp = depObj as CellValuePresenter;
if (cvp != null)
{
cvp.Field.Settings.AllowEdit = (bool)args.NewValue;
}
}
public static bool GetAllowFieldEdit(DependencyObject depObj)
{
return (bool) depObj.GetValue(AllowFieldEditProperty);
}
public static void SetAllowFieldEdit(DependencyObject depObj, bool value)
{
depObj.SetValue(AllowFieldEditProperty, value);
}
}
希望这有助于。
+1令人惊叹的清晰度和WPF命令。 –
Thx并且如果它解决了您的问题,请接受它作为答案。 –
是的,就像一个魅力! –