2012-02-06 2 views
2

목록 상자 항목에 ToggleButton 컨트롤 템플릿을 구현하려고합니다. 이 기능은 사용자가 목록 상자 항목을 클릭하여 특정 기능을 표시 할 수있는 응용 프로그램에서 사용됩니다.ListBox 내 Togglebutton 내의 텍스트 블록 내에서의 텍스트 래핑 ItemTemplate

<Style x:Key="ExampleListBoxItemStyle" TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate> 
        <ToggleButton IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}" 
            HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch"> 
         <StackPanel Orientation="Vertical"> 
          <TextBlock x:Name="ExampleTitle" Grid.Row="0" Foreground="#333333" 
             FontFamily="pack://application:,,,/Resources/Fonts/#Neuropol Regular" 
             FontSize="16" Height="26" TextAlignment="Left" HorizontalAlignment="Left" 
             VerticalAlignment="Top" Text="{Binding ExampleDisplayName}" 
             Margin="5"></TextBlock> 
          <TextBlock Grid.Row="1" Foreground="#333333" Margin="5,-5,5,3" HorizontalAlignment="Stretch" 
             TextAlignment="Left" FontFamily="Verdana" VerticalAlignment="Top" 
             TextWrapping="Wrap" Text="{Binding ExampleDescription}"/> 
         </StackPanel> 
        </ToggleButton> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

나는 두 textblocks이 여기

 <ListBox x:Name="_examplesListBox" 
       SelectionMode="Single" 
       BorderBrush="Transparent" 
       Background="Transparent" 
       ItemsSource="{Binding AllExamples}" 
       ItemContainerStyle="{StaticResource ExampleListBoxItemStyle}" 
       SelectedItem="{Binding SelectedExample, Mode=TwoWay}"/> 

으로 목록 상자 하나가 ExampleDisplayName, ExampleDescription에 다른 바인딩 바인딩, 정의 다음과 같이

는 목록 상자 항목 템플릿을 정의한다. 달성하고자하는 효과는 두 번째 텍스트 블록 (설명)을 묶어서 사용 가능한 공간으로 제한하는 것입니다.

이것은 내가 지금지고있어 무엇 :

SciChart Beta Examples Listbox Styling

내가 원하는 것은 목록 상자의 크기에 따라 포장 예를 들어 설명을 보여주는 두 번째 줄입니다. 응용 프로그램이 시작되면 목록 상자는 첫 행 + 여백까지 자동 크기 조정됩니다.

제안 사항?

답변

3

수평 스크롤 텍스트 배치에 도움이 것을 제거 :

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 

내가 아주 확실하지 않다 방법에만 XAML을 사용하여 첫 번째 텍스트 라인의 크기에 따라 시작시 ListBox 자동 크기.

+0

붐! 한 줄 수정. 기본적으로 텍스트 배치가있는 TextBlocks는 부모에 맞게 확장됩니다. 첫 번째 줄은 특정 크기를 요청하므로 목록 상자의 가로 스크롤 막대를 끄면 크기가 올바르게 조정됩니다. 감사! –