2

異なるタイプの要素を含むリストを修正する必要があります。各タイプには、各タイプのビューモデルを表す独自のデータ型があります。次のコードは私にとってはうまくいきますが、何らかの理由で内部のデータが切り捨てられ、何らかの値になります (デフォルトのように見えます)。このトランケーションを削除する必要があります。

これが私が持っているものです。このコードはコントロールにあり、リストにも配置できます (2 倍または 3 倍にすることができます)。しかし、私はそれが関連しているとは思わない。

<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>

fixSideViewLogItemTemplateSelectorfixSideViewLogItemStyleSelectorはセレクタで、 の型ごとに異なるデータ型またはスタイルを返しますLogItems。一般的なデータ型は 2 つの列を持つグリッドですが、これも無関係のようです。そこにテキスト ボックスを配置しようとしましたが、それでも切り捨てられます。私が得るものの例

この列を gridView 全体に拡大したいと思います。列の幅を設定すると、列のサイズが変更されますが、スペース全体を占めるようにします。これは伸縮自在である必要があります-ウィンドウに1つのコントロールを配置すると、ウィンドウ全体を占有し、ウィンドウのサイズが変更されたときに(列で)適切にサイズ変更する必要があります。2 つのコントロールを配置すると、スペースが半分に分割され、ウィンドウのサイズが変更されたときにサイズも変更されるはずです。

ヘルプ、ヒントはありますか?

Upd これ は私が使用しているテンプレートの例です。

 <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>

少し面倒ですが、とてもシンプルです。キャプションと値の 2 つの列があります。これらの列は切り捨てとは関係ありません。

このテンプレートも試しました:

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

もちろん、テキストはより長くなりました:)それでも切り捨てられていたので、リストビュー/グリッドビューを非難しましたが、内部テンプレートは非難しませんでした。

4

3 に答える 3

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}">

やった!それが誰かにも役立つことを願っています。

于 2013-04-02T12:18:06.417 に答える
0

テンプレートがどのように見えるかはわかりませんが、このような問題が見られます。通常、TextBlock がラップされていないか、TextBlock の幅が親よりも長いことが原因です。

于 2013-04-01T19:46:31.367 に答える