2016-04-29 11 views
0

私のエキスパンダーに問題があります。 (もう一度...)クリックしたエクスパンダのみを動的に拡張するにはどうすればよいですか?

私は、未知数のエントリを持つDataGridを持っています。各エントリは異なっており、手動で追加されます。それぞれには、それぞれが属する「エリア」があります。エントリは「エリア」でグループ化されています。グループ化はGroupItemで実行されます。このGroupItem内には、ExpanderとIsExpanded Bindingがあります。私はまた、エントリがフィルタリングされ、正しいものだけがグループに表示されているフィルタTextBoxを持っています。フィルタがエントリを検出した場合、すべてのエキスパンダーのisExpandedプロパティがtrueである必要があります。フィルタがエントリを見つけられない場合、isexpandedはfalseです。 このソリューションの問題点は次のとおりです。Expanderを1つクリックすると、すべてのExpanders isExpandedプロパティがtrueに設定されますが、クリックしたものだけにする必要があります。

私はこのエッセンシャルが何度も作成されるExpanderを1つしか持っていないことを知っています。

質問: クリックしたエクスパンダだけが開き、フィルタが値を見つけたら、すべてのエクスパンダが開きますか?

これはプロパティです:

public bool? FilterExpander 
     { 
      get 
      { 
       return _FilterExpander; 
      } 
      set 
      { 
       _FilterExpander = value; 
       RaisePropertyChanged(() => FilterExpander); 
      } 
     } 

これはパンダがあるHeaderstyleです:

<Style x:Key="GroupHeaderSettingsStyle" TargetType="{x:Type GroupItem}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type GroupItem}"> 
         <Expander x:Name="Exp" IsExpanded="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.FilterExpander}" > 
          <Expander.Header> 
           <TextBlock Text="{Binding Name}" Foreground="White"/> 
          </Expander.Header> 
          <ItemsPresenter/> 
         </Expander> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

私はこれが可能であると誰かが私を助けることができると思います。

ありがとうございます。

答えて

0

解決策が見つかりました。 私はExpanderモードを "OneWay"に設定するだけでした。 それはうまく動作するように。 この

<expander x:name="Exp" isexpanded="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.FilterExpander}"</expander> 

はする必要があります

<expander x:name="Exp" isexpanded="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.FilterExpander, Mode=OneWay}"</expander> 
関連する問題