2013-04-01 2 views
2

다른 유형의 요소로 목록을 수정해야합니다. 각 유형에는 각 유형에 대한 viewmodel을 나타내는 자체 데이터 유형이 있습니다. 다음 코드는 저에게 효과적이지만 어떤 이유로 내부의 데이터가 일부 값 (기본값처럼 보임)으로 잘립니다. 이 전환을 제거해야합니다.WPF에서 다른 요소 유형의 목록 레이아웃

다음은 내가 가지고있는 것입니다. 이 코드는 컨트롤에있어 목록에 배치 할 수도 있습니다 (두 배나 세 배로 늘릴 수 있음). 하지만 나는 그것이 적절하다고 생각하지 않습니다.

<ScrollViewer VerticalScrollBarVisibility="Visible"> 
      <ListView DockPanel.Dock="Top" Name="testCaseResultListView" 
         ItemsSource="{Binding LogItems}" 
         ItemContainerStyleSelector="{StaticResource fixSideViewLogItemStyleSelector}" 
         SelectionMode="Single" 
         > 
      <ListView.View> 
       <GridView x:Name="gridView2"> 
        <GridView.ColumnHeaderContainerStyle> 
         <Style TargetType="{x:Type GridViewColumnHeader}"> 
          <Setter Property="Visibility" Value="Collapsed" /> 
         </Style> 
        </GridView.ColumnHeaderContainerStyle> 
        <GridViewColumn CellTemplateSelector="{StaticResource fixSideViewLogItemTemplateSelector}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 
    </ScrollViewer> 
</DockPanel> 

fixSideViewLogItemTemplateSelectorfixSideViewLogItemStyleSelectorLogItems의 유형의 각각에 대해 서로 다른 데이터 유형 또는 스타일을 반환 선택기입니다. 공통 데이터 유형은 두 개의 열이있는 격자이지만, 그럴 수도없는 것처럼 보입니다. 텍스트 상자를 거기에 놓으려고했으나 여전히 잘립니다. Example of what I get

이 열을 전체 gridView로 확대하고 싶습니다. 열의 너비를 설정하면 열의 크기가 조정되는 것을 볼 수 있지만 전체 공간을 차지하고 싶습니다. 이것은 신축성이 있어야합니다. 하나의 컨트롤을 윈도우에두면 창 전체를 차지하고 창 크기를 조정할 때 열의 크기를 적절하게 조정해야합니다. 두 개의 컨트롤을 넣으면 공간을 반으로 나눠야하며 창 크기를 조정할 때 크기를 조정해야합니다.

도움, 팁?

업데이트 다음은 내가 사용중인 템플릿의 예입니다.

<DataTemplate x:Key="testCaseDataResultTemplate"> 
     <!-- Test case results --> 
     <Grid Margin="50,0,0,0" HorizontalAlignment="Stretch"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="80"/> 
       <!--Test case result property--> 
       <ColumnDefinition /> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition/> 
       <!--Is retry/Name--> 
       <RowDefinition /> 
       <!--Test case number--> 
       <RowDefinition /> 
       <!--Low limit--> 
       <RowDefinition /> 
       <!--High limit--> 
       <RowDefinition /> 
       <!--Measured--> 
       <RowDefinition /> 
       <!--State--> 
       <RowDefinition /> 
       <!--Test time--> 
       <RowDefinition /> 
       <!--Comment--> 
      </Grid.RowDefinitions> 
      <!--Is retry/Name--> 
      <Image Grid.Column="0" Grid.Row="0" 
           Source="..\Resources\retry16.png" 
           Stretch="None" HorizontalAlignment="Left" 
           Visibility="{Binding Path=IsRetry, Converter={StaticResource boolToVisibilityConverter}}" /> 
      <TextBlock Text="fh fhgfhg fhfhfhgfhg fhgfhfhgfhgfhgfhgfhgfhgf hgfhgfhgfhgfhgfhg fhfhgfhgf hgfhgfhfhg fhfhgf rdederserswerv 2" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" TextWrapping="Wrap" MaxWidth="{Binding ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}}}"/> 
      <!--Test case number--> 
      <TextBlock Text="Number:" Grid.Column="0" Grid.Row="1" /> 
      <TextBlock Text="{Binding Path=TestCaseNumber}" Grid.Column="1" Grid.Row="1" /> 
      <!--Low limit--> 
      <TextBlock Text="Low limit:" Grid.Column="0" Grid.Row="2" /> 
      <TextBlock Text="{Binding Path=TestCaseData.LimitData.LowLimit}" Grid.Column="1" Grid.Row="2" /> 
      <!--High limit--> 
      <TextBlock Text="High limit: " Grid.Column="0" Grid.Row="3" /> 
      <TextBlock Text="{Binding Path=TestCaseData.LimitData.HighLimit}" Grid.Column="1" Grid.Row="3" /> 
      <!--Measured--> 
      <TextBlock Text="Measured" Grid.Column="0" Grid.Row="4" /> 
      <TextBlock Text="{Binding Path=MeasuredValue, Converter={StaticResource valasaConverter}}" Grid.Column="1" Grid.Row="4" /> 
      <!--State--> 
      <TextBlock Text="Passed: " Grid.Column="0" Grid.Row="5" /> 
      <TextBlock Text="{Binding Path=Passed}" Grid.Column="1" Grid.Row="5" /> 
      <!--Test time--> 
      <TextBlock Text="Test time: " Grid.Column="0" Grid.Row="6" /> 
      <TextBlock Text="{Binding Path=TestTime, StringFormat={}{0:hh':'mm':'ss'.'ff}}" Grid.Column="1" Grid.Row="6" /> 
      <!--Comment--> 
      <TextBlock Text="{Binding Path=ShortMessage}" 
            Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="2" 
            Visibility="{Binding Path=HasComment, Converter={StaticResource boolToVisibilityColConverter}}" 
            VerticalAlignment="Stretch" 
            MaxWidth="400" 
            TextAlignment="Center"> 
          <TextBlock.ToolTip> 
          <StackPanel> 
           <TextBlock Text="{Binding Path=FullMessage}"/> 
          </StackPanel> 
          </TextBlock.ToolTip> 
         </TextBlock> 
     </Grid> 
    </DataTemplate> 

다소 지저분하지만 매우 간단합니다. 여기에는 캡션과 값이라는 두 개의 열이 있습니다. 이러한 열은 잘림과 관련이 없습니다.

<DataTemplate x:Key="testCaseDataResultTemplate"> 
    <TextBlock Text="Long long text goes here...... ->" HorizontalAlignment="Stretch"/> 
</DataTemplate> 

텍스트는 더 이상 : 그것은 여전히 ​​절단되었다 물론, 그래서리스트 뷰 /의 GridView 있지만 내부 템플릿을 비난 :

는 또한이 템플릿을 시도했습니다.

답변

0

내가 퍼즐을 풀 었다고 말할 수는 없지만, 적어도 예상대로 작동합니다. GridView 및 열을 사용하여 전체 정의를 제거하고 ItemTemplateSelector를 ListView에 직접 넣습니다.

그래서 내 ListView에이처럼 지금 보이는 : 그것을했다

  <ListView DockPanel.Dock="Top" Name="testCaseResultListView" 
         ItemsSource="{Binding LogItems}" 
         ItemContainerStyleSelector="{StaticResource fixSideViewLogItemStyleSelector}" 
         SelectionMode="Single" 
         HorizontalAlignment="Stretch" 
         HorizontalContentAlignment="Stretch" 
         ItemTemplateSelector="{StaticResource fixSideViewLogItemTemplateSelector}"> 

을! 희망은 누군가에게 도움이 될 것입니다.

0

템플릿이 어떻게 생겼는지는 모르겠지만 이런 문제가 발생합니다. 일반적으로 줄 바꿈을하지 않는 TextBlock 또는 TextBlock의 너비가 부모보다 더 깁니다.

+0

는 텍스트 상자의 ListView에서와 아래로 시작, 모든 태그에 대한 스트레치로 HorizontalContentAlignment 및 HorizontalAlighnemnt 모두 넣어 시도 대답 – Archeg

1

이 문제는 아마도 ListView.HorizontalContentAlignmentStretch으로 설정해야한다고 생각합니다. 또한 항목 컨테이너 스타일과 항목 템플릿은 HorizontalAlignment ~ Stretch이어야하고 Width 속성은 Auto이어야합니다.


이 또한 내가 문제가있는 항목을 해결하려면 GridViewColumn의 폭이 될 수 있다고 생각 그 자체가 폭 폭

편집 ...이 팁이 도움이되기를 바랍니다. 단일 열을 사용하는 경우 ListViewListBox 또는 ItemsControl으로 변경할 수 있습니다.

+0

에 업데이트를 참조하십시오. 너비와 동일합니다. 아직 아무것도 – Archeg

관련 문제