WPF DataGridDetailsTemplate扩展错误

时间:2009-04-09 18:39:26

标签: c# wpf

我正在使用WPFtoolkit中的Datagrid,并且遇到了RowDetailsTemplate的问题。

我的RowDetailsTemplate包含3个项目:2个富文本框和一个按钮。我希望发生的是按钮停留在窗口的右边缘,两个富文本框展开以填充剩余的空间。我遇到的问题是,如果我将按钮停靠在窗口右侧,当我放大窗口时,按钮正确移动并保持在外边缘,但如果我缩小窗口,它不会收缩并保持相同的间距。这导致它位于窗口外部并且不可见。这是预期的行为吗?如果有人知道解决方法或解决方案来设置我所描述的整个细节模板,我将不胜感激。

相关代码:

<toolkit:DataGrid.RowDetailsTemplate>
    <DataTemplate>
<DockPanel Width="Auto">
    <DockPanel DockPanel.Dock="Right">
        <Button Height="50" Width="75" Margin="5 5 0 5" DockPanel.Dock="Right">
            <Image Source="Resources/ArrowOutOfBox.bmp" />
        </Button>
    </DockPanel>
    <StackPanel Margin="20 0 20 0" Orientation="Horizontal" HorizontalAlignment="Left" DockPanel.Dock="Left">
        <StackPanel>
            <ToolBar>
                <ToggleButton MinWidth="20" Command="EditingCommands.ToggleBold" CommandTarget="{Binding ElementName=rtbNewComment}" TextBlock.FontWeight="Bold" Content="B" />
                <ToggleButton MinWidth="20" Command="EditingCommands.ToggleItalic" CommandTarget="{Binding ElementName=rtbNewComment}" TextBlock.FontStyle="Italic" Content="I" />
                <ToggleButton MinWidth="20" Command="EditingCommands.ToggleUnderline" CommandTarget="{Binding ElementName=rtbNewComment}">
                    <TextBlock TextDecorations="Underline">U</TextBlock>
                </ToggleButton>
            </ToolBar>
            <RichTextBox 
                                    x:Name="rtbNewComment"
                                    Height="100"
                                    Margin="5 5 0 5"
                                    FlowDirection="LeftToRight" 
                                    VerticalScrollBarVisibility="Auto"
                                    IsReadOnly="False" 
                                    SpellCheck.IsEnabled="true" 
                                    >
            </RichTextBox>
        </StackPanel>
        <StackPanel>
            <RichTextBox 
                                    x:Name="rtbCommentHistory"
                                    Height="125"
                                    Margin="5 5 0 5"
                                    FlowDirection="LeftToRight" 
                                    VerticalScrollBarVisibility="Auto"
                                    IsReadOnly="True" 
                                    SpellCheck.IsEnabled="true" 
                                    >
                <RichTextBox.Resources>
                    <Style TargetType="{x:Type Paragraph}">
                        <Setter Property="Margin" Value="0" />
                    </Style>
                </RichTextBox.Resources>
            </RichTextBox>
        </StackPanel>
    </StackPanel>

</DockPanel>
</DataTemplate>
</toolkit:DataGrid.RowDetailsTemplate>

1 个答案:

答案 0 :(得分:0)

原来发生的事情是,DetailsTemplate中的DockPanel试图使自己居中,但是中心是计算会上升而不是下降。通过设置Horizo​​ntalAlignment =“Left”,它解决了问题。我仍然想要一种方法来使所有项目的大小与其当前大小成比例以填充框,但到目前为止没有运气。