2012-02-20 55 views
0

我有ViewModel中Person類的數組,我想在表中顯示它們的名稱。我也列了複選框。這是我的看法部分:DataTrigger未觸發

<Grid> 
    <Grid.Resources> 
     <Style x:Key="CheckBoxStyle" TargetType="{x:Type Control}"> 
      <Setter Property="Visibility" Value="Visible"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsSelectionAllowed}" Value="False"> 
        <Setter Property="Visibility" Value="Hidden"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Grid.Resources> 
    <ListView ItemsSource="{Binding Persons}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Width="40"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox Style="{StaticResource CheckBoxStyle}" 
               ......................... 
               .... some logic here .... 
               ......................./> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      <GridViewColumn Width="140" 
          Header="Number" 
          DisplayMemberBinding="{Binding Path=Name}" /> 
     </GridView> 
    </ListView.View> 
    </ListView> 
</Grid> 

我想顯示/根據IsSelectionAllowed布爾變量的值隱藏複選框。爲什麼DataTrigger沒有開火?

+0

你的代碼看起來不錯。您是否正確設置了視圖/網格的數據上下文?有關任何綁定錯誤,請參閱輸出窗口 – 2012-02-20 15:18:40

+0

是的。數據上下文已設置(人員綁定工作正常)。 – shtkuh 2012-02-20 15:25:06

+0

IsSelectionAllow是視圖模型或Person類型的屬性嗎? – Phil 2012-02-20 15:33:32

回答

1

假設IsSelectionAllowed是對數據上下文設置視圖模型的屬性,你會需要一個相對源綁定 - 希望這是正確的,沒有任何的測試:

<DataTrigger Binding="{Binding Path=IsSelectionAllowed, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}" Value="False"> 
    <Setter Property="Visibility" Value="Hidden"/> 
</DataTrigger> 

IsSelectionAllowed的結合在你的代碼到Person類型。