Hi,
we deal with a strange behavior of a property CanUserAddRows during binding. Our goal is following behavior - when a cell value is 0, set CanUserAddRows to false, if any other value - to true. Here is xaml code :
<datagrid:ThemedDataGrid Grid.Row="2" Grid.Column="2"
CanUserAddRows="{Binding CanAddRows}"
CanUserDeleteRows="True"
AutoGenerateColumns="False"
IsReadOnly="{Binding IsDatagridReadOnly}"
SelectedIndex="{Binding ModulBasisSelectedIndex}"
SelectedValue="{Binding ModulBasisSelectedValue}"
ItemsSource="{Binding ModulBasisCollection}"
MaxHeight="125"
SelectionUnit="FullRow" GridLinesVisibility="All"
FrozenColumnCount="1"
CellStyle="{StaticResource DataGridCellStyleKey}"
Margin="20,3,3,3"
SelectionMode="Single">
<i:Interaction.Triggers>
<i:EventTrigger EventName="CellEditEnding">
<ei:CallMethodAction TargetObject="{Binding}" MethodName="OnModulBasisCellEditEnding"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<datagrid:ThemedDataGrid.Columns>
<datagrideditors:DataGridInt32Column Binding="{Binding BASIS, UpdateSourceTrigger=PropertyChanged}"
Minimum="0"/>
</datagrid:ThemedDataGrid.Columns>
</datagrid:ThemedDataGrid>
Here is property :
public bool CanAddRows
{
get { return _canAddRows; }
set
{
if(value == _canAddRows) return;
_canAddRows = value;
RaisePropertyChanged();
}
}
And we are changing this property on OnModulBasisCellEditEnding event :
public void OnModulBasisCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
if (e.EditAction != DataGridEditAction.Commit) return;
var item = e.Row.Item as MODUL_BASIS;
if (null == item) return;
if (0 == item.BASIS)
{
CanAddRows = false;
}
else
{
CanAddRows = true;
}
}
When themedDatagrid is loaded, value is false by default. Then we add an item with value 1 and user is able to add new rows. If to enter value greater than 0, everything works fine. When 0 is entered, dataGrid changes value of canUserAddRows to false and user are not able to add rows. After that, value of themedDataGrid is always false and never changing back to true, no matter what value was entered.
How can I set it back to true?
Thank you