Devexpress wpf CellEditor 绑定到 class 个实例
Devexpress wpf CellEditor bind to class instance
我有dxg:GridControl。
xaml:
<dxg:GridControl Name="DynamicGridControl"
ItemsSource="{Binding CommonEditCollection, Mode=TwoWay}"
SelectionMode="Cell"
AutoGenerateColumns="AddNew"
AutoGeneratedColumns="GridControl_AutoGeneratedColumns">
<dxmvvm:Interaction.Behaviors>
<lc:CellSelectionBehavior SelectedCells="{Binding SelectedCells, Mode=TwoWay}"/>
</dxmvvm:Interaction.Behaviors>
</dxg:GridControl>
ItemsSource 绑定到 CommonEditCollection
视图模型:
public ObservableCollection<Dictionary<int, DynamicTableModel>> CommonEditCollection { get; set; }
型号:
public class DynamicTableModel
{
public double CellWidth { get; set; }
public string StrValue{ get; set; }
public bool IsBorerNull { get; set; }
public DynamicTableModel(string strVal, double cellWidth, bool isBorerNull = false)
{
StrValue = strVal;
CellWidth = cellWidth;
IsBorerNull = isBorerNull;
}
}
在 xaml 文件中,我为单元格样式设置了资源(我想合并一些单元格):
<DataTemplate x:Key="CellDataTemplate">
<StackPanel>
<Border ...
</Border.Style>
</Border>
<dxg:CellEditor Content="{Binding Value.StrValue}"/>
</StackPanel>
</DataTemplate>
我将 CellEditor 绑定到 DynamicTableModel class 的 属性。但是,如果我尝试在任何单元格中编辑文本,它就会抛出 NullReferenceException。
我无法将 class DynamicTableModel 更改为字符串,因为我需要其他属性。我尝试使用转换器属性,但是当我更改文本时它会创建新实例。
请帮助我更改单元格中的文本。
项目 link:https://github.com/Kolgotin/DynamicGridControl
结果我刚刚添加了这个 属性:
<DataTemplate>
<dxe:TextEdit Name="PART_Editor" HorizontalContentAlignment="Stretch">
<dxe:TextEdit.EditTemplate>
<ControlTemplate>
<dxe:TextEdit x:Name="teNewValue"
HorizontalAlignment="Stretch"
EditValue="{Binding Value.StrValue}"/>
</ControlTemplate>
</dxe:TextEdit.EditTemplate>
</dxe:TextEdit>
</DataTemplate>
处理程序在 "set" 方法中工作
我有dxg:GridControl。
xaml:
<dxg:GridControl Name="DynamicGridControl"
ItemsSource="{Binding CommonEditCollection, Mode=TwoWay}"
SelectionMode="Cell"
AutoGenerateColumns="AddNew"
AutoGeneratedColumns="GridControl_AutoGeneratedColumns">
<dxmvvm:Interaction.Behaviors>
<lc:CellSelectionBehavior SelectedCells="{Binding SelectedCells, Mode=TwoWay}"/>
</dxmvvm:Interaction.Behaviors>
</dxg:GridControl>
ItemsSource 绑定到 CommonEditCollection
视图模型:
public ObservableCollection<Dictionary<int, DynamicTableModel>> CommonEditCollection { get; set; }
型号:
public class DynamicTableModel
{
public double CellWidth { get; set; }
public string StrValue{ get; set; }
public bool IsBorerNull { get; set; }
public DynamicTableModel(string strVal, double cellWidth, bool isBorerNull = false)
{
StrValue = strVal;
CellWidth = cellWidth;
IsBorerNull = isBorerNull;
}
}
在 xaml 文件中,我为单元格样式设置了资源(我想合并一些单元格):
<DataTemplate x:Key="CellDataTemplate">
<StackPanel>
<Border ...
</Border.Style>
</Border>
<dxg:CellEditor Content="{Binding Value.StrValue}"/>
</StackPanel>
</DataTemplate>
我将 CellEditor 绑定到 DynamicTableModel class 的 属性。但是,如果我尝试在任何单元格中编辑文本,它就会抛出 NullReferenceException。
我无法将 class DynamicTableModel 更改为字符串,因为我需要其他属性。我尝试使用转换器属性,但是当我更改文本时它会创建新实例。
请帮助我更改单元格中的文本。
项目 link:https://github.com/Kolgotin/DynamicGridControl
结果我刚刚添加了这个 属性:
<DataTemplate>
<dxe:TextEdit Name="PART_Editor" HorizontalContentAlignment="Stretch">
<dxe:TextEdit.EditTemplate>
<ControlTemplate>
<dxe:TextEdit x:Name="teNewValue"
HorizontalAlignment="Stretch"
EditValue="{Binding Value.StrValue}"/>
</ControlTemplate>
</dxe:TextEdit.EditTemplate>
</dxe:TextEdit>
</DataTemplate>
处理程序在 "set" 方法中工作