上下文菜单分隔符不在wpf中的datatemplate内水平拉伸

时间:2018-04-05 07:14:36

标签: c#

我在我的应用程序中使用了Context Menu,分隔符在datatemplate内部没有水平拉伸。分离器居中对齐,不会延伸到堆叠板端。我的代码如下,我附上截图,

<ContextMenu x:Key="ContextMenuItem" x:Name="menu" ItemsSource="{Binding Notifications}">
    <ContextMenu.ItemTemplate>
        <DataTemplate>
            <StackPanel>
            <Grid HorizontalAlignment="Stretch" Margin="-30,0,-50,0">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>                            
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <StackPanel Grid.Row="0" Grid.Column="0">
                    <Image Source="Resources/Icon.png" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,1,5,0"
                           Visibility="{Binding note, Converter={StaticResource BoolToVisConverter}}">                               
                    </Image>
                </StackPanel>
                <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Stretch" Margin="0,0,0,5">
                    <TextBlock Text="{Binding TestDate}" FontWeight="Bold"/>
                    <TextBlock Text=" - " Foreground="Black" FontWeight="Bold"/>
                    <TextBlock Text="{Binding Value}" FontWeight="Bold" Margin="0,0,10,0"/>                      
                </StackPanel>
                <StackPanel  Grid.Row="1" Grid.Column="1" Orientation="Vertical">
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" Margin="0,0,0,5">
                    <TextBlock Text="{Binding PropertyOne}" Foreground="Gray" FontSize="10"/>
                    <TextBlock Text="/" Foreground="Gray" FontSize="10"/>
                    <TextBlock Text="{Binding PropertyTwo}" Foreground="Gray" FontSize="10"/>                     
                </StackPanel>
                    <StackPanel HorizontalAlignment="Stretch" Margin="0,0,0,5">
                        <TextBlock Text="{Binding Name}" Foreground="Blue"/>                                
                    </StackPanel>                            
                </StackPanel>                      
                <StackPanel Grid.Row="1" Grid.Column="2" VerticalAlignment="Top" HorizontalAlignment="Center">
                    <Button Background="Transparent" BorderThickness="0"  Click="ToolBar_Click">
                        <Image Source="Resources/[![enter image description here][1]][1]Icon.png" HorizontalAlignment="Center" VerticalAlignment="Center"/>                                
                    </Button>
                </StackPanel>                        
            </Grid>
                <Separator Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />
            </StackPanel>                    
        </DataTemplate>                  
    </ContextMenu.ItemTemplate>           
</ContextMenu>  

Please find the ScreenShot

1 个答案:

答案 0 :(得分:0)

您的分隔符完全拉伸到父级(StackPanel)的大小。您的印象是因为上面的网格具有负边距:<Grid HorizontalAlignment="Stretch" Margin="-30,0,-50,0">,这使得网格在父StackPanel之外流动。