2

私は単純なListViewを持っています

<ListView ItemsSource="{Binding SelectedSearch.Offers}"
    IsItemClickEnabled="True"
    ItemClick="lv_ItemClick_1"
    Margin="0,0,0,10"
    Name="lv"                          
    SelectionMode="None"
    IsSwipeEnabled="false"
    ItemTemplateSelector="{StaticResource OffersGridTemplateSelector}"/>

そして、2 つの異なる DataTemplate から選択するために使用する ItemTemplate セレクターをカスタムしました。問題は、各アイテムに最小の高さのようなものがあるように見えることです。

TextBlock だけで DataTemplate を使用する場合

    <DataTemplate x:Key="SpecialTextTemplate">
        <TextBlock Text="{Binding Text}" />
    </DataTemplate>

アイテムは垂直方向にスペースを取りすぎます。スタックパネル内の 3 つのテキストブロックで構成される他のテンプレートと同じ最小スペースを取るようです。

コンテンツの高さまで縮小するにはどうすればよいですか? 最低身長はありますか?

4

5 に答える 5

3

最近、UWP アプリケーションでも同じ問題に直面しました。はい、リストビューアイテムに定義されたデフォルトの最小高があります。同じものをオーバーライドすると問題が解決します。私にとって、この解決策は機能します:

<Style x:Key="NoSpacesListViewItemStyle" TargetType="ListViewItem">
   <Setter Property="MinHeight" Value="YOUR_MIN_HEIGHT" />
</Style>
于 2016-02-25T16:08:13.637 に答える
1

答えは明らかではありません。ListViewItem の既定のテンプレートには、選択した項目を装飾するチェックボックスがあります。このチェックボックスは、選択したアイテムの右上隅に表示され、高さと幅が 40 であるため、これらのアイテムの高さを最小限に抑えることができます。次のように設定して、チェックボックスを無効にできます。

       SelectionCheckMarkVisualEnabled="False"

コピーしたテンプレート内。

于 2014-11-06T23:02:45.760 に答える
0

デフォルトでは、ItemTemplate の最小の高さはありません。リスト ビュー、2 つのテンプレート、1 つのテンプレート セレクターを備えた非常に単純なサンプルを作成しましたが、問題は再現しませんでした。それがあなたのために働くかどうか私に知らせてください。

XAML:

<ListView ItemsSource="{Binding Items}" ItemTemplateSelector="{StaticResource ts}">
            <ListView.Resources>
                <DataTemplate x:Key="t1">
                    <TextBlock Text="aaa"/>
                </DataTemplate>

                <DataTemplate x:Key="t2">
                    <TextBlock Text="bbb" Foreground="Red" Height="100"/>
                </DataTemplate>

                <local:TestTemplateSelector x:Key="ts" T1 ="{StaticResource t1}" T2="{StaticResource t2}"/>
            </ListView.Resources>
        </ListView>

セレクター: (xaml で「local」として定義された名前空間にある必要があります

using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace *TestBinding*
{
    public class TestTemplateSelector : DataTemplateSelector
    {
        public DataTemplate T1 { get; set; }
        public DataTemplate T2 { get; set; }

        protected override Windows.UI.Xaml.DataTemplate SelectTemplateCore(object item, Windows.UI.Xaml.DependencyObject container)
        {
            if (item.ToString() == "b")
            {
                return T2;
            }

            return T1;
        }
    }

ビューモデル:

public IList<string> Items { get { return new List<string>() { "a", "b", "c" }; } }
于 2012-12-01T05:03:43.250 に答える
0

古い質問ですが、同じ問題がありまし。解決策を試したことはありませんが、VariableSizedWrapGrid が必要なようです。

于 2013-05-14T11:33:01.973 に答える