简体   繁体   English

如何在我的工具箱Datagrid中对齐行选择?

[英]How to align row selection in My toolkit Datagrid?

I am using My Toolkit datagrid . 我正在使用My Toolkit datagrid I have reduced the Row height. 我降低了行高。 then when I am selecting a row. 然后当我选择一行时。 It is displaying like this. 它像这样显示。 How can I get proper alignment for Datagid row..... can any one help me how can I reduce the row height with proper alignment. 如何获得Datagid行的正确对齐方式.....任何人都可以帮助我如何通过正确对齐降低行高。

It is like this: 就像这样:

在此处输入图片说明

Code for this grid is: 该网格的代码是:

<Border x:Name="WideMainGrid" Grid.Row="1"  Grid.ColumnSpan="8" Background="Black" BorderThickness="1" BorderBrush="Gray"  Margin="10,-5,5,0">
    <ScrollViewer x:Name="svCartItemsList" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Grid.Row="1" Grid.ColumnSpan="8">
        <controls:DataGrid x:Name="dgNewBill" RowBackgroundEvenBrush="Black" RowBackgroundOddBrush="Black" ItemsSource="{Binding objStockIssueItemList}" VerticalAlignment="Stretch" Height="470" SelectionMode="Single" TabNavigation="Local" HeaderBackground="Black" Background="Black" BorderThickness="1" BorderBrush="Gray" Grid.Row="2"  Grid.ColumnSpan="9" Margin="0,0,0,0">
            <controls:DataGrid.Resources>
                <Converters:VisibilityConverter x:Key="vc" />

                <Converters:NotConverter x:Key="nc" />
                <Style x:Key="TransparentListBox" TargetType="ListBox">
                    <Setter Property="Foreground" Value="{StaticResource ListBoxForegroundThemeBrush}"/>
                    <Setter Property="Background" Value="Transparent"/>
                    <Setter Property="BorderBrush" Value="{StaticResource ListBoxBorderThemeBrush}"/>
                    <Setter Property="BorderThickness" Value="{StaticResource ListBoxBorderThemeThickness}"/>
                    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
                    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
                    <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled"/>
                    <Setter Property="ScrollViewer.IsHorizontalRailEnabled" Value="True"/>
                    <Setter Property="ScrollViewer.VerticalScrollMode" Value="Enabled"/>
                    <Setter Property="ScrollViewer.IsVerticalRailEnabled" Value="True"/>
                    <Setter Property="ScrollViewer.ZoomMode" Value="Disabled"/>
                    <Setter Property="IsTabStop" Value="False"/>
                    <Setter Property="TabNavigation" Value="Once"/>
                    <Setter Property="FontFamily" Value="{StaticResource ContentControlThemeFontFamily}"/>
                    <Setter Property="FontSize" Value="{StaticResource ControlContentThemeFontSize}"/>
                    <Setter Property="ItemsPanel">
                        <Setter.Value>
                            <ItemsPanelTemplate>
                                <VirtualizingStackPanel/>
                            </ItemsPanelTemplate>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ListBox">
                                <Border x:Name="LayoutRoot" BorderBrush="{TemplateBinding BorderBrush}" 
        BorderThickness="{TemplateBinding BorderThickness}" 
        Background="{TemplateBinding Background}">
                                    <VisualStateManager.VisualStateGroups>
                                        <VisualStateGroup x:Name="CommonStates">
                                            <VisualState x:Name="Normal"/>
                                            <VisualState x:Name="Disabled">
                                                <Storyboard>
                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="LayoutRoot">
                                                        <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
                                                    </ObjectAnimationUsingKeyFrames>
                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="LayoutRoot">
                                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxDisabledForegroundThemeBrush}"/>
                                                    </ObjectAnimationUsingKeyFrames>
                                                </Storyboard>
                                            </VisualState>
                                        </VisualStateGroup>
                                        <VisualStateGroup x:Name="FocusStates">
                                            <VisualState x:Name="Focused"/>
                                            <VisualState x:Name="Unfocused"/>
                                        </VisualStateGroup>
                                    </VisualStateManager.VisualStateGroups>
                                    <ScrollViewer x:Name="ScrollViewer" 
                  HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" 
                  HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
                  IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" 
                  IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" 
                  Padding="{TemplateBinding Padding}" TabNavigation="{TemplateBinding TabNavigation}" 
                  VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" 
                  VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" 
                  ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}">
                                        <ItemsPresenter/>
                                    </ScrollViewer>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
                <Style x:Key="DataGridStyle1" TargetType="controls:DataGrid">
                    <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
                    <Setter Property="HeaderBackground" Value="{ThemeResource SystemControlHighlightChromeHighBrush}" />
                    <Setter Property="RowBackgroundOddBrush" Value="{ThemeResource SystemControlPageBackgroundChromeLowBrush}" />
                    <Setter Property="CellTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <ContentPresenter Margin="12" Content="{Binding Control}" />
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="controls:DataGrid">
                                <Grid Background="{TemplateBinding Background}">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="*" />
                                    </Grid.RowDefinitions>

                                    <Grid Grid.Row="0" Visibility="Collapsed" Background="{TemplateBinding HeaderBackground}" Height="40" x:Name="ColumnHeaders">
                                        <!-- HACK: Needed so that column DPs are working when adding columns in code only. -->
                                        <ContentPresenter>
                                            <controls:DataGridTextColumn />
                                        </ContentPresenter>
                                    </Grid>

                                    <controls:MtListBox BorderThickness="0" Grid.Row="1"
                        ItemContainerStyle="{TemplateBinding RowStyle}"
                        HorizontalContentAlignment="Stretch" 
                        VerticalContentAlignment="Stretch"
                        Foreground="{ThemeResource SystemControlForegroundBaseHighBrush}"
                        Style="{StaticResource TransparentListBox}" 
                        Margin="0" x:Name="Rows" />
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="HeaderTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Grid Background="Transparent">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="*" />
                                    </Grid.ColumnDefinitions>

                                    <ContentPresenter Grid.Column="0" 
                        Margin="12,0,12,2" 
                        VerticalAlignment="Center" 
                        FontSize="{ThemeResource TextStyleLargeFontSize}" 
                        Content="{Binding Header}" />

                                    <StackPanel Grid.Column="1" 
                        Visibility="{Binding IsSelected, Converter={StaticResource vc}}" 
                        VerticalAlignment="Center" 
                        HorizontalAlignment="Left">
                                        <Path Data="M4,0 L0,8 L8,8 Z" Fill="White" Visibility="{Binding IsAscending, Converter={StaticResource vc}}"/>
                                        <Path Data="M0,0 L4,8 L8,0 Z" Fill="White" Visibility="{Binding IsAscending, Converter={StaticResource nc}}"/>
                                    </StackPanel>
                                </Grid>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>

            </controls:DataGrid.Resources>
            <controls:DataGrid.Style>
                <StaticResource ResourceKey="DataGridStyle1"/>
            </controls:DataGrid.Style>

            <controls:DataGrid.RowStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="IsTabStop" Value="True"></Setter>
                    <Setter Property="Padding" Value="0,0,0,0"></Setter>
                    <Setter Property="Height" Value="35"></Setter>
                </Style>
            </controls:DataGrid.RowStyle>



            <controls:DataGrid.Columns>

                <controls:DataGridTextColumn Binding="{Binding SNumber}" Width="0.5*" CanSort="False" Foreground="White">

                    <controls:DataGridTextColumn.Style>
                        <Style TargetType="TextBlock">
                            <Setter Property="TextAlignment" Value="Center"></Setter>
                            <Setter Property="VerticalAlignment" Value="Center"></Setter>
                            <!--<Setter Property="MinHeight" Value="30"></Setter>-->
                        </Style>
                    </controls:DataGridTextColumn.Style>
                </controls:DataGridTextColumn>

                <controls:DataGridTemplatedColumn CellTemplate="{StaticResource myCellTemplateMonth}"  Width="2.5*" x:Name="ItemDesc"  CanSort="False" IsAscendingDefault="True">


                    <!--<controls:DataGridTemplatedColumn.CellTemplate>
                            <DataTemplate>
                                <Grid>
                                    <Grid.Resources>
                                        <Storyboard x:Key="std" x:Name="std">
                                            <ColorAnimation To="DarkTurquoise" Duration="0:0:1" RepeatBehavior="Forever" AutoReverse="True"
        Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
        Storyboard.TargetName="lastnamePanel" />
                                        </Storyboard>

                                    </Grid.Resources>
                                    <StackPanel x:Name="lastnamePanel" Background="Black">
                                        <i:Interaction.Behaviors>
                                            <Core:DataTriggerBehavior x:Name="desctrgr" Binding="{Binding description}" ComparisonCondition="Equal">
                                                <Media:ControlStoryboardAction x:Name="mediaDesc" Storyboard="{StaticResource std}" />
                                            </Core:DataTriggerBehavior>
                                        </i:Interaction.Behaviors>
                                        <TextBlock x:Name="lastnameTxt" Foreground="White" Text="{Binding description}" TextAlignment="Left" VerticalAlignment="Stretch" Margin="0,0,0,0"></TextBlock>
                                    </StackPanel>
                                </Grid>
                            </DataTemplate>
                        </controls:DataGridTemplatedColumn.CellTemplate>-->

                </controls:DataGridTemplatedColumn>


                <controls:DataGridTextColumn Binding="{Binding uom}" Width="0.5*" CanSort="False" Foreground="White">

                    <controls:DataGridTextColumn.Style>
                        <Style TargetType="TextBlock">
                            <Setter Property="TextAlignment" Value="Center"></Setter>
                            <Setter Property="VerticalAlignment" Value="Center"></Setter>
                            <Setter Property="Margin" Value="0,0,0,0"></Setter>
                        </Style>
                    </controls:DataGridTextColumn.Style>
                </controls:DataGridTextColumn>

                <controls:DataGridTemplatedColumn  Width="0.7*" CanSort="False">

                    <controls:DataGridTemplatedColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Name="pricePanel"  Height="30" Tapped="pricePanel_Tapped" >
                                <TextBlock Name="price" Foreground="White"  Text='{Binding editedPrice}' TextAlignment="Center" VerticalAlignment="Center"  Margin="0,5,0,0"></TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </controls:DataGridTemplatedColumn.CellTemplate>
                </controls:DataGridTemplatedColumn>

                <controls:DataGridTemplatedColumn  Width="0.7*" CanSort="False">

                    <controls:DataGridTemplatedColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Name="quantityPanel"  Height="30" Tapped="quantityPanel_Tapped">
                                <TextBlock Name="quantity" TextAlignment="Center" Foreground="White"  Text='{Binding quantity}' VerticalAlignment="Center"  Margin="0,5,0,0"></TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </controls:DataGridTemplatedColumn.CellTemplate>
                </controls:DataGridTemplatedColumn>

                <controls:DataGridTemplatedColumn  Width="0.6*" CanSort="False">

                    <controls:DataGridTemplatedColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Name="discountPanel"  Height="30" Tapped="discountPanel_Tapped" >
                                <TextBlock Name="Discount" TextAlignment="Center" Foreground="White" Text='{Binding discount}' VerticalAlignment="Center" Margin="10,5,0,0"></TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </controls:DataGridTemplatedColumn.CellTemplate>
                </controls:DataGridTemplatedColumn>

                <controls:DataGridTextColumn Binding="{Binding cartTotal}" Width="0.85*" CanSort="False" Foreground="White">

                    <controls:DataGridTextColumn.Style>
                        <Style TargetType="TextBlock">
                            <Setter Property="HorizontalAlignment" Value="Center"></Setter>
                            <Setter Property="VerticalAlignment" Value="Center"></Setter>
                            <Setter Property="Margin" Value="-40,0,0,0"></Setter>
                        </Style>
                    </controls:DataGridTextColumn.Style>
                </controls:DataGridTextColumn>

                <!--delete image column-->
                <controls:DataGridTemplatedColumn CanSort="False">
                    <!--<controls:DataGridTemplatedColumn.Header>
                            <Image Source="/Images/erase.png" Height="40" Width="40" Grid.Column="7" Margin="5"></Image>
                        </controls:DataGridTemplatedColumn.Header>-->
                    <controls:DataGridTemplatedColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel x:Name="voidImagePanel"  Height="30" Tapped="voidImagePanel_Tapped">
                                <Image x:Name="VoidImage" Source="{Binding imageUrl}" Height="20" Width="30" VerticalAlignment="Center" HorizontalAlignment="Center"  Margin="-20,5,0,0"></Image>
                            </StackPanel>
                        </DataTemplate>
                    </controls:DataGridTemplatedColumn.CellTemplate>
                </controls:DataGridTemplatedColumn>


            </controls:DataGrid.Columns>
        </controls:DataGrid>
    </ScrollViewer>
</Border>

You need to remove the margin="12" of ContentPresenter in x:Key="DataGridStyle1" : 您需要在x:Key="DataGridStyle1"删除ContentPresentermargin="12" x:Key="DataGridStyle1" 在此处输入图片说明

Now the it looks like this: 现在,它看起来像这样: 在此处输入图片说明

You can slightly modify the margins of your element in DataGridTemplatedColumn.CellTemplate to let the items stay in center of the row: 您可以在DataGridTemplatedColumn.CellTemplate稍微修改元素的边距,以使项目保留在行的中心: 在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM