다른 유형의 요소로 목록을 수정해야합니다. 각 유형에는 각 유형에 대한 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>
fixSideViewLogItemTemplateSelector
및 fixSideViewLogItemStyleSelector
는 LogItems
의 유형의 각각에 대해 서로 다른 데이터 유형 또는 스타일을 반환 선택기입니다. 공통 데이터 유형은 두 개의 열이있는 격자이지만, 그럴 수도없는 것처럼 보입니다. 텍스트 상자를 거기에 놓으려고했으나 여전히 잘립니다.
이 열을 전체 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 있지만 내부 템플릿을 비난 :
는 또한이 템플릿을 시도했습니다.
는 텍스트 상자의 ListView에서와 아래로 시작, 모든 태그에 대한 스트레치로 HorizontalContentAlignment 및 HorizontalAlighnemnt 모두 넣어 시도 대답 – Archeg