2

ListBox に均等な数の要素を表示するように強制しようとしています。つまり、要素が 10 個を超える場合は、ちょうど10 個の要素を表示し、スクロールして他の要素を使用できるようにします。私が知っている唯一の例は、Visual Studio の Intellisense ポップアップです。

見栄えが悪いので、アイテムの一部を表示したくありません。

高さを に設定し、10 * item heightBorder、Margin、および Padding を考慮してみましたが、実際の Border には 1 ピクセルのパディングがあるなど、他の要因があります。それを考慮しても、サイズは数ピクセルずれています。このソリューションは爆発するのを待っています。

何か案は?

ありがとう!

4

1 に答える 1

0

ビヘイビアーを使用して実行します。

ビヘイビアーを使用すると、Xamlでコントロールに機能を追加できます。チュートリアルは次のとおりです。動作チュートリアル

これがコードでどのように見えるかを知るために:

Xaml:

<ListBox ItemsSource="{Binding MyData}">
    <i:Interactions.Behaviors>
        <b:TenItemsInViewBehavior/>
    </i:Interactions.Behaviors>
</ListBox>

コード:

public class TenItemsInViewBehavior:Behavior<ListBox>
{
    protected override OnAttached()
    {
        base.OnAttached();
        //AssociatedObject is the ListView object - you can bind to its events
        this.AssociatedObject. SelectionChanged+=CheckIfOnTenthItem;       
    }
    private void CheckIfOnTenthItem(object sender, eventargs e)
    {
        ....
    }
}

何が起こるかというと、Behaviorはコントロールにバインドし、OnAttached()メソッドで通知します。これが発生すると、「AssociatedObject」と呼ばれるビヘイビアのプロパティにコントロールが設定されていることがわかります。これで、コントロール、そのデータ、イベントなどにバインドして、必要に応じて操作できます。

必要なことを行う1つの方法は、リストボックスからデータを取得してビヘイビアーに保存し、最初の10レコードを再バインドすることです。ユーザーが10番目までスクロールしたら、リストに新しいアイテムを追加し始めることができます(または必要に応じてリストを操作できます)。

ビヘイビアーを取得するには、Expression Blendをダウンロードし、System.Windows.Interactivitydllを取得する必要があります。入手したら、Blendをアンインストールできます。

ビヘイビアーは、モジュール式で一貫した方法でコントロールに機能を追加するための優れた方法です。

于 2012-10-02T13:03:46.853 に答える