2011-02-01 16 views
4

ビューには顧客のリストが含まれているとします。デフォルトでは、このビューには多くの画面領域が与えられ、顧客の詳細が表示されます。リストの各項目は、顧客の名前を大きなフォントで表示し、2行目のアドレスは小さいフォントで表示することができます。多分以前の注文の合計のようないくつかの統計情報WPF:詳細のレベルを変更してサイズの変更に適応させる

ここで、ユーザーがウィンドウを絞り込んだ場合、その詳細のすべてに十分なスペースが必要です。これに対処する正しい方法は何でしょうか?各アイテムにどのようなデータ型が使用されているかをバインドする方法はありますか?

ユーザーがウィンドウをさらに小さくすると、リストを一括して取り除くことは可能でしょうか?顧客または何かの数を示すラベルに置き換えますか?

これを解決する方法についてのご意見はありますか? 似たようなデモをご存知ですか?

答えて

3

私は、ウィンドウのコンバーターのVisibilityプロパティをウィンドウの幅(またはレイアウトに応じて高さ)にコンバーターを介してバインドすることでこれにアプローチします。

public class HideIfSmallConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var c = value as IComparable; 
     if (c == null) return Visibilty.Visible; 

     return c.CompareTo(parameter) < 0 ? Visibility.Collapsed : Visibility.Visible; 
    } 
} 

ここで、値が指定されたパラメータよりも小さい場合、要素を折りたたむことができるようにする比較機能があります。

<ListBox Visibility="{Binding ActualWidth,RelativeSource={RelativeSource FindAncestor,AncestorType=Window},Converter={StaticResource hideIfSmall},ConverterParameter=400}" /> 

だからアイデアは、ウィンドウの幅は、これの400

どれがテストされていない下回った場合、リストボックスが崩れていることですが、うまくいけば、それはあなたにいくつかのアイデアを与える:私たちは、この方法でそれを使用することができます。

+1

これはシンプルな可視性の解決策です。それは可能でしょうか? – Vegar

+0

私はそれが可能であると思う。コンバータがブール値のような離散値を返す場合は、スタイル内のDataTriggerを使用して、テンプレートを特定の幅以下に縮小したウィンドウとして変更することができます。 –

関連する問題