2016-07-01 2 views
2

바인딩 된 항목의 목록을 표시하려고합니다. 나는 datatemplate을 그리드로 커스터마이징했고, 화면의 오른쪽에 고착 된 오른쪽 컬럼 (고정 폭을 가짐)과 나머지 공간을 채우고 싶은 첫 번째 컬럼을 원한다. 일반적으로이 잘 작동하지만이 표를 ListView 안에 넣을 때 동작이 변경된 것 같습니다. 나는 하나의 제어의 경계가 다른 사람의 대 어디에 더 나은 아이디어를 얻기 위해 요소의 여러 가지의 배경에 색상을 넣어했습니다[UWP] [XAML] ListView 하위 항목이 전체 너비를 사용하지 않습니다.

<ListView x:Name="LView" Background="Green" Width="{Binding ElementName=ExtPropPage, Path=Width}" ItemsSource="{Binding CurrentSensor.ExtendedProperties, Mode=TwoWay}" Margin="5" HorizontalAlignment="Stretch" VerticalAlignment="Center"> 
      <ListView.ItemTemplate> 
       <DataTemplate > 
        <Grid Background="BlueViolet" Width="{Binding ElementName=LView, Path=Width}" HorizontalAlignment="Center" > 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="100"/> 
         </Grid.ColumnDefinitions> 
         <Grid Grid.Column="0" Background="Blue" HorizontalAlignment="Stretch"> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="*"/> 
           <RowDefinition Height="*"/> 
          </Grid.RowDefinitions> 
          <TextBlock Grid.Row="0" FontWeight="Bold" FontSize="12" Text="{Binding KeyId, Mode=TwoWay, Converter={StaticResource ExtPropConverter}}" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
          <TextBlock Grid.Row="1" FontWeight="Normal" FontSize="10" Text="{Binding JsonValue, Mode=TwoWay}" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
         </Grid> 
         <StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Right" BorderBrush="{x:Null}" Background="Red"> 
          <Button DataContext="{Binding}" ToolTipService.ToolTip="Edit" Click="ButtonHandler" BorderBrush="DarkGray" FontFamily="Segoe MDL2 Assets" Content="&#xE70F;" Style="{StaticResource CircleButtonStyle}"> 

          </Button> 
          <Button x:Name="DeviceCancelButton" ToolTipService.ToolTip="Delete" view:EventHandlers.Attach="Click" Click="DeleteExtProp" BorderBrush="DarkGray" FontFamily="Segoe MDL2 Assets" Content="&#xE74D;" Style="{StaticResource CircleButtonStyle}"> 

          </Button> 
         </StackPanel> 


        </Grid> 
       </DataTemplate> 
      </ListView.ItemTemplate> 

     </ListView> 

: 다음은 내 ListView에 코드입니다. 필자가 지금까지 볼 수있는 것은 ListView가 전체 화면 너비를 채우도록 확장되었지만 목록보기 (격자)의 항목에 대해서는 열 1의 항목의 길이가 다양하다는 것입니다. 1 항목이 채워짐) 그리드의 공간 사용은 내가 Width="*"을 사용하여 사용 가능한 공간을 확장하고 채우기를 지시해야한다는 사실에 의존하기보다는 그 안에있는 객체의 너비에 따라 달라집니다. 열 자체에 무엇이 있는지에 관계없이

HorizontalAlignment="Stretch"의 사용에 관한 답변을 검색 한 후 많은 답변을 찾았습니다. 잘못된 장소에서 사용하고 있거나 다른 모든 것을 놓치고 있습니다.

참고 : 위의 코드는 필자가 시도한 유일한 해결책이라는 것을 나타내는 것은 아니며 너비와 정렬을 조정하려는 다양한 시도가이 게시물을 거대하게 만들 것이므로 희망적으로 누군가는 내가 가진 어떤 것이 아닌 대답을 가지고 있습니다. 그 결과는 성공하지 못했습니다.

도움 주셔서 감사합니다.

P. 어떤 대답에 보너스를 추가하기 위해, "onMouseOver"속성을 재정 의하여 listviewitem 위로 마우스를 가져 가면 배경 변경을 중단하고 싶습니다. 내가 이것들 위에 떠있을 때 특별한 일이 필요하지 않습니다. 이 같은 일 이후

답변

5

친구가 나에게이 질문을 의미하는이 찾을 도움이 이제 중복 :

ListViewItem won't stretch to the width of a ListView

하지만 여기 내 문제를 해결 테이크 아웃 코드이었다 단지 명확성을 위해 :

<ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     </Style> 
</ListView.ItemContainerStyle> 
0

방금 ​​ListView를 올바르게 늘리려 고 시도하면서이 대답을 발견했습니다. Visual Studio 2017을 사용하고 있고 UWA (Universal Windows App) 프로젝트에서 작업하고 있습니다.

프로젝트 템플릿에 의해 추가 된 기본 Grid 요소가 변경되어 GridView/Grid로 추가되었을 때 ListView가 늘어날 수 없습니다. 당신이 볼 수있는

HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 

그것은 잘 작동 : 목록보기 스트레칭 차이가있다

ListView Stretch

+0

는 마침내리스트 뷰 요소에 직접 추가 할 수있는 XAML 우연히 발견 자체 및 목록보기 내의 항목 늘이기. 나는 당신이 질문과 대답을 다시 읽고, 차이점을보기 위해 몇 가지 예를 가지고 놀아 볼 것을 제안합니다. – TekGiant

+0

오, 재미 있습니다. 원본 게시물의 스냅 샷이 도움이 될 수 있습니까? 고마워 – raddevus

관련 문제