11

私は持っていて、いくつかのスタイルを変更するためListViewにそれを編集しましItemContainerStyleたが、アイテムを追加するときにその迷惑なアニメーションを削除する方法がわかりません。

を使用するItemsControlと、新しいアイテムを追加すると、アニメーションなしで即座に表示されます。

を使用ListViewすると、アイテムにしばらく時間がかかり、アニメーションが開始されて表示されます。

それを削除したいのですが、add animationクリックするAdd itemとすぐに表示され、余分なものは表示されません。

所属すべきだと思いますが、ItemContainerStyle私もすべてのビジュアルステートアニメーションをコメントアウトしていて、まだそこにあります。私は何かが欠けています。

4

7 に答える 7

19

これらのアニメーションはトランジションと呼ばれ、の一部ですListViewStyleListView変更するには、デザイナでコントロールを右クリックし、 Edit Template>を選択しますEdit a Copy...。これにより、組み込みのスタイルがXAMLに追加されます。

スタイルの次の部分はあなたにとって興味深いものです。

<Setter Property="ItemContainerTransitions">
    <Setter.Value>
        <TransitionCollection>
            <AddDeleteThemeTransition/>
            <ContentThemeTransition/>
            <ReorderThemeTransition/>
            <EntranceThemeTransition IsStaggeringEnabled="False"/>
        </TransitionCollection>
    </Setter.Value>
</Setter>

どのアニメーションが嫌いなのかよくわかりませんが、から削除AddDeleteThemeTransitionしてEntranceThemeTransitionみてくださいTransitionCollection。それはトリックを行う必要があります。

変更したスタイルが目的のに適用されていることを確認することを忘れないでくださいListView

于 2012-11-26T05:57:41.807 に答える
4

デフォルトのItemsPanelにある可能性があります。

あなたはこのようなことを試すことができます:

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <VirtualizingStackPanel>
            <VirtualizingStackPanel.ChildrenTransitions>
                <TransitionCollection/>
            </VirtualizingStackPanel.ChildrenTransitions>
        </VirtualizingStackPanel>
    </ItemsPanelTemplate>
</ListView.ItemsPanel>

なぜあなたはデザイン言語の高速で流動的なものの流動的な部分に反対したいのですか?テンプレートよりも当たり障りのないものを実装しようとしていますか、それとも独自のトランジションを追加することを計画していますか?

于 2012-11-26T05:53:40.477 に答える
4

コメントの1つとして、これを追加するだけでうまくいきました。

<ListView.ItemContainerTransitions> 
    <TransitionCollection/> 
</ListView.ItemContainerTransitions>

他のすべてのコードは必要ありません。

于 2019-10-07T13:09:01.093 に答える
2

ダミールの答えのおかげで、これが私がやった方法です。これをApp.xamlに追加するだけです

<Application...>
    <Application.Resources>
        <ResourceDictionary>
            ...
            <Style TargetType="ListView">
                <Setter Property="ItemContainerTransitions">
                    <Setter.Value>
                        <TransitionCollection/>
                    </Setter.Value>
                </Setter>
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>
于 2017-06-15T16:30:31.550 に答える
1

これは機能します-

listView.ItemContainerTransitions = null;

プロパティに新しい参照(またはnull)を割り当てる必要がありItemContainerTransitionsます。このプロパティによってすでに参照されているコレクションの値を変更しても機能しません。

これは機能しません-

listView.ItemContainerTransitions.Clear();
于 2020-06-12T14:28:27.447 に答える
0

提案されたItemContainerTransitionsの削除のほかに、削除したい追加のアニメーションがあります。

ListViewItemテンプレートには、ContentPresenterTranslateTransformと呼ばれる変換アニメーションがあり、アイテムのコンテンツを所定の位置にスライドさせます。テンプレートのストーリーボードからそのアニメーションを削除するだけです。

于 2020-02-19T07:48:46.983 に答える
-1

UWPで、アニメーションを削除するために次のコードを作成しました。

// Remove Add/Delete animations
TransitionCollection tc = _listView.ItemContainerTransitions;
for (int i = tc.Count - 1; i >= 0; i--) if (tc[i] is AddDeleteThemeTransition) tc.RemoveAt(i);
于 2016-10-14T11:15:17.603 に答える