2012-03-18 2 views
1

목록 상자의 전체 항목을 목록 상자 너비로 늘리는 데 문제가 있습니다.ListBoxItem HorizontalContentAlignment = 늘이기가 작동하지 않음

  • 설정 목록 상자의 HorizontalContentAlignment
  • 스트레치하기 : 아래

    내가 나를 위해 다음과 같은 제안은 다른 글에서 찾을 수 있지만,이 일을하지 않은 시도

    <ListBox x:Name="MyListBox" 
           VerticalAlignment="Stretch" 
           HorizontalAlignment="Stretch" 
           HorizontalContentAlignment = "Stretch" 
           Margin="0,10,0,0" 
           ItemsSource="{Binding Path=Users}" 
           ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
           Grid.Column="0" 
           Grid.ColumnSpan="1" 
           Grid.Row="1" 
           Grid.RowSpan="3">      
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <local:MyListBoxTemplate/> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
    </ListBox> 
    

    내 목록 상자에 대한 내 XAML입니다

  • listboxitem의 스타일을 덮어 씁니다. 즉, 목록 상자 xaml 내의 ItemContainerStyle 태그 내의 새 스타일 (참고 : 전세계적인 탐색 테마를 사용하고 있습니다)
  • 내가 내 데이터 템플릿에 대해 별도의 XAML 파일을 사용하고 있기 때문에 HorizontalContentAlignmemt

그것을가 포함 CoreStyles.xaml에 DefaultListBoxItemStyle 스타일을 editting에? 내 데이터 템플릿에 문제가 있습니까? 내가 시도 할 수있는 다른 제안이있는 사람이 있습니까?

어딘가에 ListBox의 실제 너비에 ListBoxItem Width를 바인딩 할 수 있습니다.

나는 이것에 아주 새롭다 그래서 나는 진짜로 간단하거나 명백한 무언가를 놓친 경우에 미리 사과한다!

<Grid x:Name="LayoutRoot" HorizontalAlignment="Stretch" ShowGridLines="True" Height="20"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="10*" /> 
     <ColumnDefinition Width="30*" /> 
     <ColumnDefinition Width="300*" /> 
     <ColumnDefinition Width="50*" /> 
     <ColumnDefinition Width="10*" /> 
    </Grid.ColumnDefinitions> 
    <Image x:Name="TwitterImageIcon" 
      Grid.Column="1" 
      Grid.ColumnSpan="1" 
      Source="{Binding Path=imageUrl}" 
      /> 
    <StackPanel Orientation="Horizontal" Grid.Column="2" Grid.ColumnSpan="1" HorizontalAlignment="Stretch" > 

     <TextBlock x:Name="TwitterUsernameTextBlock" 
        Text="{Binding Path=username,StringFormat='@\{0\} '}"/> 
     <TextBlock x:Name="TwitterFullNameTextBlock" 
       Text="{Binding Path=fullname}"/> 
    </StackPanel> 


     <Button x:Name="InfoButton" 
      Content="Info" 
      Grid.Column="3" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch"/> 
     <Border x:Name="StyleBorder" /> 
    </Grid> 

어떤 제안 크게 감사 :

다음은 내 데이터 템플릿입니다.

미리 감사드립니다.

는 업데이트 :

<ListBox...> 
     <ListBox.Resources> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
      </Style> 
     </ListBox.Resources> 
    </ListBox> 

목록 상자 항목의 higlighting이 끝난 공중 선회 할 때되도록 선택하면 그것은 그러나 국제적인 테마에 영향을 미치는 작품의 나머지 다른 스타일입니다 추가 할 때 언급하기를 잊으 셨나요 코스모 폴리탄 테마.

답변

7

은 목록 상자 안에,이 시도 :

<ListBox...> 
    <ListBox.Resources> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     </Style> 
    </ListBox.Resources> 
</ListBox> 

EDIT1 (미안 내 나쁜 영어)

이 CoreStyles.xaml (x:Key="DefaultListBoxItemStyle" 확인)에 ListBoxItem 스타일을 찾을 수 있습니다. 해당 스타일 내부 는 x:Name="contentControl"을 명명 된 ContentControl을을 찾아 HorizontalContentAlignment 속성을 추가, 코드는 변경 후 다음과 같이 표시됩니다

이제
<ContentControl x:Name="contentControl" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" > 
    <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" VerticalAlignment="Center" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="7"/> 
</ContentControl> 

당신이 있다면 ... 나는 첫 번째 대답에 보여 Listbox.Resources을 제거 할 수 있습니다 이 동작을 모든 listBox에 사용하지 않으려면이 스타일을 복사하여 다른 키를 지정하면됩니다.

+0

아, 나는 이미 이것을 시도했지만 (ListBox에서 언급 했음에 틀림 없다.)ItemContainerStyle 태그)하지만 CoreStyles.xaml의 코스 모 폴리탄 테마로 정의 된 스타일을 덮어 씁니다. 따라서 각 ListBox 항목의 강조 표시가 기본 스타일이되어 나머지 국제 테마와 일치하지 않습니다. 귀하의 회신을 보내 주셔서 감사합니다 – rallen

+0

내 EDIT1을 참조하십시오, 그게 작동해야합니다 :) – Leo

+0

완벽 레오 감사합니다! – rallen