2016-04-26 84 views
0

這是我的第一個條目,請耐心等待我。 我的問題是,我有一個DataGrid內的擴展。擴展器用於分組。我也有一個過濾器文本框,它可以過濾視圖並只顯示匹配的行。 我的問題是:分組擴展器isexpanded屬性在搜索時發現條目應爲true,如果未使用搜索,則爲false。 這是我DataGrid.GroupStyle:如何綁定動態創建的擴展器的isexpanded屬性

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

這是靜態資源

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

,這是我的C#屬性:

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

它從未進入 「獲取法」 ,所以我認爲這個問題在xaml代碼中。但我不確定。

我希望你能幫助我。 如果我忘記了一些代碼片段或信息,請讓我知道。

感謝

我曾嘗試:

所有 「模式」 所有UpdateSourceTriggers, 同樣的RelativeSource綁定

+0

這可能是因爲'FilterExpander'屬性不是'GroupItem' DataContext的一部分。您可以嘗試將其移入代表「DataGrid」的GroupItems的類中(它包含「Name」屬性)。 – bars222

+0

也許這可以幫助你http://stackoverflow.com/questions/6099141/expander-isexpanded-binding?rq=1 – bars222

+0

感謝您的回覆。 FilterExpander屬性是在DataContext類中,並且鏈接也沒有幫助:但是,無論如何,謝謝 – Evosoul

回答

0

我發現這個問題。該視圖沒有找到Property FilterExpander。問題是,Expander在ViewCollection裏面查看了屬性。我不得不改變綁定到這:

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

現在它工作正常。