2016-04-26 5 views
0

Dies ist mein erster Eintrag, also bitte gedulden Sie sich mit mir. Mein Problem ist, dass ich Expander in einem DataGrid habe. Die Expander werden zum Gruppieren verwendet. Ich habe auch ein Filtertextfeld, das die Ansicht filtert und nur die übereinstimmenden Zeilen anzeigt. Mein Problem ist: Die Expanders Grouping Expander Expanded sollte True sein, wenn die Suche Einträge findet und False, wenn die Suche nicht verwendet wird. Das ist mein DataGrid.GroupStyle:Wie binde ich die Eigenschaft isexpanded dynamisch erzeugter Expander

<DataGrid.GroupStyle> 
    <GroupStyle ContainerStyle="{StaticResource GroupHeaderSettingsStyle}"> 
     <GroupStyle.Panel> 
       <ItemsPanelTemplate> 
        <DataGridRowsPresenter/> 
       </ItemsPanelTemplate> 
     </GroupStyle.Panel> 
    </GroupStyle> 
</DataGrid.GroupStyle> 

Dies ist der Static

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

Und das ist mein C# Eigentum:

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

Es ist nie in die "get-Methode" wird Also denke ich, dass das Problem innerhalb des XAML-Codes liegt. Aber ich bin mir nicht sicher.

Ich hoffe, Sie können mir helfen. Wenn ich einige Code Snippets oder Informationen vergessen habe, lassen Sie es mich wissen.

Dank

Was ich versucht habe:

Alle "Modi" Alle UpdateSourceTriggers, Auch gefunden Relative Bindung

+0

Es passiert wahrscheinlich, weil 'FilterExpander'-Eigenschaft nicht der Teil des' GroupItem' DataContext ist. Sie können versuchen, es in eine Klasse zu verschieben, die GroupItems von 'DataGrid' repräsentiert (das die' Name' -Eigenschaft enthält). – bars222

+0

Und vielleicht kann Ihnen das helfen http://stackoverflow.com/questions/6099141/expander-expanded-binding?rq=1 – bars222

+0

Vielen Dank für Ihre Antwort. Die FilterExpander-Eigenschaft ist in der DataContext-Klasse und der Link hat auch nicht geholfen :(Aber trotzdem danke – Evosoul

Antwort

0

ich das Problem. Die Ansicht hat den Property FilterExpander nicht gefunden. Das Problem war, dass Expander innerhalb der ViewCollection nach der Eigenschaft gesucht hat. Ich musste die Bindung zu diesem ändern:

<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> 

Jetzt funktioniert es richtig.

Verwandte Themen