2012-02-14 5 views
0

多くの検索の後、コードでエクスパンダを拡張するためにこのコードを思いつきました: 私はXAML/WPFを初めて使用しています。より良い方法が、私は、私はそれが働いて(しかしまだcompletly)しまっ幸せです検索エクスパンダエクスプレッサーがdynamicresourceから拡張されました。手動での変更がもう機能しない場合

XAMLの多くの後: は「ヘッダ」

xmlns:System="clr-namespace:System;assembly=mscorlib" 

にこれを添加しWindow.Recources

にこれを追加
<System:Boolean x:Key="booexapnders">False   
     </System:Boolean> 
012ここで

は、エキスパンダーの一部(エクスパンダがリストビューにあるのDataTemplateで作られて)

<ListView x:Name="lsvteamleft" SelectionChanged="lsvleft_SelectionChanged" GotFocus="lsv_GotFocus" ScrollViewer.VerticalScrollBarVisibility="Visible"> 
         <ListView.ItemTemplate> 
          <DataTemplate> 
           <Expander Header="{Binding}" Margin="0,0,0,2" IsExpanded="{DynamicResource booexapnders}" > 
            <Expander.HeaderTemplate> 

私はこのリストビューに複数の項目を追加することができていますので、作られた、複数のエクスパンダがあります。 は、C#で、私は、コードを使用します。

this.Resources["booexapnders"] = true; // to expand all the expanders 
this.Resources["booexapnders"] = false; // to colapse all the expanders 

今の問題は、たとえば、あります。私はlistviewに5つの項目を持っていて、1の拡張版を見たいと思っています。私はボタンでこれらをすべて潰してしまいます。そして、リストビューの中で私が望むものを展開します。これは、私が手動で拡張したものは、「すべてを展開」または「すべてを折りたたむ」ボタンでもう反応しませんでしたか?

ありがとうございます。

答えて

0

あなたのアイテムのプロパティにIsExpandedをバインドし、コレクション全体を繰り返したり、すべてのアイテムの値を変更したりすることで、その単一のアイテムに対して変更することができます。

+0

「あなたの商品について」とはどういう意味ですか?私のクラスで? – Maximc

+0

@ Maxim:あなたの 'ListView'のソースであるコレクション内のアイテムのタイプ。 (文字列の単純なコレクションを使用しているように見えますが、ヘッダに表示されているものとexpaded状態のプロパティを持つ適切なクラスに変更する必要があります) –

+0

私はバインディングにクラスを使用します。しかし、私のコードをすべて貼り付けるのはとても複雑で、複数のリストビューを持っています。また、エクスパンダを持っていない人もいますし、複数のObservableCollectionsを持っています。アイテムはSQLite DBからロードされていますが、これを修正するためにクラスに新しいブール値を追加することをお勧めしません。主にリストには10​​0人以上の「人物」があり、このリストビューには最大5つのアイテムしか存在しないためです。 – Maximc