Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
2325
Xam Data Grid :: Drag not working when Cells are Editable
posted

Hi .

When i make cells of XAM Data grid editable, i am not able to drag the cells.  please find my XAML code.  When i turn  AllowEdit="False". It is working properly.

How can i make cells editable and do Drag operation

<UserControl.Resources>

<Style TargetType="{x:Type igDP:CellValuePresenter}">

<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BackgroundHover" Value="Transparent"/>
<Setter Property="BorderHoverBrush" Value="Transparent"/>
<!--<Setter Property="BackgroundActive">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="#FF85A2B2"/>
<GradientStop Offset="1.1" Color="#00FFFFFF"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>-->
<Setter Property="BorderActiveBrush" Value="#00151C55"/>
<Setter Property="BackgroundSelected">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="#FFCAEBFF"/>
<GradientStop Offset="1.1" Color="#00FFFFFF"/>
<GradientStop Color="#83CAEBFF" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderSelectedBrush" Value="#FF666666"/>
<Setter Property="BackgroundFieldSelected">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="#FFDDDDDD"/>
<GradientStop Offset="1.1" Color="#00FFFFFF"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderFieldSelectedBrush" Value="#FF666666"/>
<Setter Property="BackgroundPrimary" Value="#7FE9E9E9"/>
<Setter Property="BorderPrimaryBrush" Value="#FFE9E9E9"/>
<Setter Property="ForegroundStyle">
<Setter.Value>
<Style/>
</Setter.Value>
</Setter>
<Setter Property="ForegroundActiveStyle" Value="{DynamicResource {ComponentResourceKey {x:Type igDP:XamDataGrid}, GrayForegroundStyle}}" />
<Setter Property="ForegroundAlternateStyle" Value="{DynamicResource {ComponentResourceKey {x:Type igDP:XamDataGrid}, GrayForegroundStyle}}" />
<Setter Property="ForegroundPrimaryStyle" Value="{DynamicResource {ComponentResourceKey {x:Type igDP:XamDataGrid}, GrayForegroundStyle}}" />
<Setter Property="ForegroundSelectedStyle" Value="{DynamicResource {ComponentResourceKey {x:Type igDP:XamDataGrid}, GrayForegroundStyle}}" />
<Setter Property="ForegroundFieldSelectedStyle" Value="{DynamicResource {ComponentResourceKey {x:Type igDP:XamDataGrid}, GrayForegroundStyle}}" />
<Setter Property="ForegroundHoverStyle" Value="{DynamicResource {ComponentResourceKey {x:Type igDP:XamDataGrid}, GrayForegroundStyle}}" />
<Setter Property="CornerRadius" Value="0"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="2,0,0,0"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<!-- AS 5/23/07 BR23120 -->
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}">
<igWindows:CardPanel MouseDown="CardPanel_MouseDown" >

<ig:DragDropManager.DragSource>
<ig:DragSource IsDraggable="True"
Drop="DragSource_Drop" DragOver="DragSource_DragOver"
DragStart="DragSource_DragStart" DragChannels="channelModule"/>

</ig:DragDropManager.DragSource>


<ig:DragDropManager.DropTarget>
<ig:DropTarget IsDropTarget="True" DropChannels="channelModule,ChannelA" DropTargetMarkerBrush="Red"/>
</ig:DragDropManager.DropTarget>
<!-- [JM 06-06-07] This element is not being used so I am commenting it out. Its Visibility property is initialized to Collapsed and the IsSelected
trigger below has commented out the line that sets the Visibility to Visible. Checked with Grant on this and he feels it is left over
from early styling efforts and can be removed. -->
<!--<Rectangle x:Name="LeftBorder"
Fill="#FFBBBBBB"
Width="1"
Margin="0,1,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Stretch"
Visibility="Collapsed" />-->
<Border
x:Name="MainBorder"
CornerRadius="{TemplateBinding CornerRadius}"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}"/>
<Rectangle
x:Name="Active"
Fill="{TemplateBinding BackgroundActive}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Width="Auto"
Height="Auto"
SnapsToDevicePixels="True"
Opacity="1"
Visibility="Collapsed"
StrokeThickness="1"
Stroke="{TemplateBinding BorderActiveBrush}"/>
<ContentPresenter
x:Name="PART_EditorSite"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="{TemplateBinding Padding}"
Style="{TemplateBinding ForegroundStyle}"
>

</ContentPresenter>
</igWindows:CardPanel>
<ControlTemplate.Triggers>
<!-- HighlightAsPrimary -->
<Trigger Property="HighlightAsPrimary" Value="true">
<Setter Property="Background" Value="{Binding Path=BackgroundPrimary, RelativeSource={RelativeSource Self}}"/>
<Setter Property="BorderBrush" Value="{Binding Path=BorderPrimaryBrush, RelativeSource={RelativeSource Self}}"/>
<Setter TargetName="PART_EditorSite" Property="Style" Value="{Binding Path=ForegroundPrimaryStyle, RelativeSource={RelativeSource TemplatedParent}}"/>
</Trigger>
<!-- IsFieldSelected -->
<Trigger Property="IsFieldSelected" Value="true">
<Setter Property="Background" Value="{Binding Path=BackgroundFieldSelected, RelativeSource={RelativeSource Self}}"/>
<Setter Property="BorderBrush" Value="{Binding Path=BorderFieldSelectedBrush, RelativeSource={RelativeSource Self}}"/>
<Setter TargetName="PART_EditorSite" Property="Style" Value="{Binding Path=ForegroundFieldSelectedStyle, RelativeSource={RelativeSource TemplatedParent}}"/>
</Trigger>
<!-- IsSelected -->
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" Value="{Binding Path=BackgroundSelected, RelativeSource={RelativeSource Self}}"/>
<Setter Property="BorderBrush" Value="{Binding Path=BorderSelectedBrush, RelativeSource={RelativeSource Self}}"/>
<Setter TargetName="PART_EditorSite" Property="Style" Value="{Binding Path=ForegroundSelectedStyle, RelativeSource={RelativeSource TemplatedParent}}"/>
<!--<Setter Property="Visibility" Value="Visible" TargetName="LeftBorder" />-->
</Trigger>
<!-- IsActive -->
<Trigger Property="IsActive" Value="true">
<Setter TargetName="PART_EditorSite" Property="Style" Value="{Binding Path=ForegroundActiveStyle, RelativeSource={RelativeSource TemplatedParent}}"/>
<Setter Property="Visibility" TargetName="Active" Value="Visible"/>
</Trigger>
<!-- IsMouseOver -->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsSelected" Value="False"/>
<Condition Property="IsFieldSelected" Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="Background" Value="{Binding Path=BackgroundHover, RelativeSource={RelativeSource Self}}"/>
<Setter Property="BorderBrush" Value="{Binding Path=BorderHoverBrush, RelativeSource={RelativeSource Self}}"/>
<Setter TargetName="PART_EditorSite" Property="Style" Value="{Binding Path=ForegroundHoverStyle, RelativeSource={RelativeSource TemplatedParent}}"/>
</MultiTrigger>
<!-- Field.IsFixedStateChanging JM 01-22-09 NA 9.1 FixedFields -->
<DataTrigger Binding="{Binding Path=Field.IsFixedStateChanging, RelativeSource={RelativeSource Self}}" Value="True">
<Setter Property="Background" Value="#AA8DBAEB"/>
<Setter Property="BorderBrush" Value="#AA8DBAEB"/>
</DataTrigger>
<!--SSP 5/27/09 NAS9.2 IDataErrorInfo Support-->
<Trigger Property="IsDataErrorTemplateActive" Value="true">
<Setter TargetName="PART_EditorSite" Property="ContentTemplate" Value="{DynamicResource {x:Static igDP:DataPresenterBase.DataErrorContentTemplateKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<!-- DRCA Foreground Hover Trigger-->

<!-- JJD 4/30/09 - TFS17157 use new IsRecordSelected property -->
<Trigger Property="IsRecordSelected" Value="True">
<Setter Property="ForegroundStyle" Value="{DynamicResource {ComponentResourceKey {x:Type igDP:XamDataGrid}, GrayForegroundStyle}}" />
</Trigger>

<!-- DRCA Foreground Selected Trigger-->
<!-- JJD 4/30/09 - TFS17157 use new IsMouseOverRecord property -->
<Trigger Property="IsMouseOverRecord" Value="True">
<Setter Property="ForegroundStyle" Value="{DynamicResource {ComponentResourceKey {x:Type igDP:XamDataGrid}, GrayForegroundStyle}}" />
</Trigger>

</Style.Triggers>
</Style>


</UserControl.Resources>
<Grid>

<Label Content="Component:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="-1,0,0,0" />
<Label Content="{Binding Component.ComponentNumber}" Margin="79,0,187,0" VerticalAlignment="Top" FontWeight="Bold" Height="26"/>
<Button Content="UnAssign" Command="{Binding UnAssignIOComponents}" HorizontalAlignment="Right" Width="75" Margin="0,0,0.333,2.333" Height="24" VerticalAlignment="Bottom" />

<cts:XamDataGrid x:Name="dgDeviceList" AllowDrop="True" GroupByAreaLocation="None" SelectedItems="{Binding SelectedElements, Mode=OneWayToSource}"
DataSource="{Binding IOComponentsBindings}" BorderThickness="1" BorderBrush="{DynamicResource {x:Static SystemColors.ActiveBorderBrushKey}}"
ScrollingMode="Immediate" Margin="0,31,0.333,26.333" AssigningFieldLayoutToItem="xamDataGrid1_AssigningFieldLayoutToItem"
InitializeRecordDirect="xamDataGrid1_InitializeRecordDirect">
<cts:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings SelectionTypeRecord="Extended" AutoGenerateFields="False" ExpansionIndicatorDisplayMode="Never"
/>
</cts:XamDataGrid.FieldLayoutSettings>

<cts:XamDataGrid.FieldSettings>

<!--<igDP:FieldSettings CellClickAction="SelectRecord"
AllowGroupBy="False" AllowHiding="Never" AllowEdit="False"
AllowRecordFiltering="False" AllowSummaries="False" LabelTextAlignment="Left"/>-->

<igDP:FieldSettings AllowEdit="True"/>
</cts:XamDataGrid.FieldSettings>
<cts:XamDataGrid.FieldLayouts>

<igDP:FieldLayout Key="IOcomponents">
<igDP:FieldLayout.SortedFields>
<igDP:FieldSortDescription FieldName="IOSequenceNumber" Direction="Ascending" />
</igDP:FieldLayout.SortedFields>
<igDP:Field Name="IOSequenceNumber" Label="Point" Width="0" Visibility="Collapsed"/>
<igDP:Field Name="IOcomponentNumber" Label="Address" Width="Auto">

</igDP:Field>
<igDP:Field Name="IODeviceName" Label="Tag" Width="Auto" >

</igDP:Field>
<igDP:Field Name="IODeviceDescription" Label="Description" Width="*" >

</igDP:Field>
<!--Converter="{StaticResource convert}" -->
<igDP:Field Name="Components" Width="Auto" />
</igDP:FieldLayout>

<igDP:FieldLayout Key="child">
<igDP:Field Name="ComponentNumber" Label="Component Number" />
<igDP:Field Name="Description" Label="Description" Width="Auto" />
<igDP:FieldLayout.Settings>
<igDP:FieldLayoutSettings LabelLocation="Hidden"/>
</igDP:FieldLayout.Settings>
</igDP:FieldLayout>
</cts:XamDataGrid.FieldLayouts>
</cts:XamDataGrid>

Parents
No Data
Reply
  • 17475
    Offline posted

    Hello Jerovsek, 

    The MouseDown event is not being handled in the CardPanel but in an element above it in the visual tree. This causes the DragDropManager not to work as you expected. What I could suggest you in this case is handling the PreviewMouseDown event. For this case you could use DragDrop control instead of DragDropManager (here you could find more information). 

    Please let me know if this helps you resolving your issue.

Children