0

我有一个如下的用户界面:

在此处输入图像描述

问题是目前将名称与消息分开的线不可见,除非屏幕已填满(它基本上是自定义控件上的边框)。

我想要的是让父控件 ( stackpanel) 永久有一条线穿过它,而不必在每个控件上使用边框MessageControl

这可能吗?

这是代码stackpanel

<UserControl x:Class="ChatBoxWPF.ChatWindow"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" d:DesignHeight="402" d:DesignWidth="700" xmlns:my="clr-namespace:ChatBoxWPF" VerticalContentAlignment="Stretch" VerticalAlignment="Stretch">
    <ScrollViewer>
        <StackPanel Name="Messages" VerticalAlignment="Bottom"></StackPanel>
    </ScrollViewer>
</UserControl>

更新 1:

我试过这个:

<ScrollViewer Name="scroll">
    <StackPanel Name="Messages" VerticalAlignment="Bottom">
            <Line StrokeThickness="1" X1="100" Y1="0" X2="100" Y2="{Binding ElementName=scroll, Path=ActualHeight}" />
        </StackPanel>
</ScrollViewer>

没有网格。它现在有时会显示在设计器中,有时则不会。当运行时根本不显示。我需要网格吗?

4

2 回答 2

0

我建议你使用第二层作为背景——第二层可以是一个简单的网格或任何你喜欢的东西:

<Grid>
  <Grid ZIndex="0">
     <anything I want!>
  </Grid>
  <ScrollViewer ZIndex="1">
         <StackPanel Name="Messages" VerticalAlignment="Bottom">
         </StackPanel>
  </ScrollViewer>
</Grid>
于 2012-05-14T09:27:14.327 回答
0

一个非常直率和简单的方法:

<Grid>
    <ScrollViewer>
        <StackPanel Name="Messages" VerticalAlignment="Bottom"></StackPanel>
    </ScrollViewer>
    <Line StrokeThickness="0.5" X1="116" X2="116" Y1="0" Stroke="Gainsboro" Y2="{Binding ElementName=ToLevelControl, Path=ActualHeight}" />
</Grid>
于 2012-05-14T09:19:44.960 回答