2012-05-16 5 views
1

텍스트 항목 목록이 그려지는 채팅 창과 비슷한 창을 표시하려고합니다. 창의 크기를 조정할 수 있어야하고 한 줄에 들어 가지 않으면 각 텍스트 항목이 줄 바꿈되어야합니다.강제로 ListView의 너비를 제한하여 자식 텍스트를 강제로 바꿈

내가 지금까지 가지고 :

MessageItem - 사용자 제어, 여러 TextBlock이를 국경

<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
    <Border BorderBrush="Silver" BorderThickness="1" Height="Auto" HorizontalAlignment="Left" Margin="0,10,0,10" Name="messageContainer" VerticalAlignment="Top" Width="Auto"> 
     <TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="messageContent" VerticalAlignment="Stretch" Width="Auto" Text="This is some longer text. Wow that wasn't as long as I thought." TextWrapping="Wrap" Padding="10" /> 
    </Border> 
</Grid> 

MessageBox에 - MessageItems

<Grid Name="messageGrid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
    <ScrollViewer VerticalScrollBarVisibility="Auto"> 
     <!--<StackPanel Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="messagePanel" VerticalAlignment="Stretch" Width="Auto"> 

     </StackPanel> --> 
     <ListView HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"> 
      <local:MessageItem></local:MessageItem> 
     </ListView> 
    </ScrollViewer> 
</Grid> 

을 보유하고 ListView에있는 사용자 제어 문제 :

내가 e는 MessageItem을 보유하기 위해 StackPanel을 주석 처리했습니다. MessageItem을 축소하여 텍스트가 올바르게 줄 바꿈합니다. ListView를 사용하면 축소되지 않습니다.

나는 연구에서 왜 그럴지를 알았지 만 주변을 둘러 볼 방법을 찾아 내지 못했습니다. 지금까지 내가 MeasureOverride 및/또는 ArrangeOverride를 재정의해야한다고 말할 수는 있지만 WPF에서 내가하고있는 WTF를 알기에는 너무 새롭다. (rimshot)

답변

3

왜 ListView는 자체 ScrollView를 내부적으로 가지고 있기 때문에 ListView를 ScrollViewer에 넣을 지 잘 모르겠습니다.

메시지 항목을 줄이려면 가로 스크롤 막대를 해제해야합니다. 그렇지 않으면 컨테이너 (ListView 또는 ScrollViewer)가 MessageItem에 필요한만큼의 공간을 제공하고 스크롤바를 표시합니다. 난 당신이 심지어 ScrollViewer에 필요 모르겠어요하지만

<ScrollViewer ... ScrollViewer.HorizontalScrollBarVisibility="Disabled"/> 

<ListView ... ScrollViewer.HorizontalScrollBarVisibility="Disabled"/> 

을보십시오.

당신은 아마 목록 상자와 ItemTemplate을 대신 그것이 내가 기대했던 것보다 방법 쉬웠다 ListView에 사용자 제어

+0

와우를 사용하여 더 나을 것입니다. ScrollViewer : Resize 윈도우는 ListView가 윈도우보다 큽니다. -> "스크롤 막대가 보이지 않습니다."-> Toolbox -> ScrolViewer -> "그게 내가 필요한 것입니다!" :) 내가 WPF에 익숙하다고 말했다 : P – carpat

관련 문제