0

私は以下のようなUIを持っています:

ここに画像の説明を入力してください

問題は、画面がいっぱいにならない限り、メッセージから名前を分割する行が表示されないことです(基本的にはカスタムコントロールの境界線です)。

私が望んでいるのは、親コントロール(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>
    <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 に答える
0

背景に2番目のレイヤーを使用することをお勧めします-2番目のレイヤーは単純なグリッドまたは好きなものにすることができます:

<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 に答える