2012-02-20 6 views
0

У меня есть массив класса Person в ViewModel, и я хочу показать их имена в таблице. У меня также есть столбец с флажками. Это моя часть Вида: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

Ваш код выглядит хорошо. Правильно ли вы настроили контекст данных для представления/сетки? Смотрите окно вывода для любых ошибок привязки –

+0

Да. Установлен контекст данных (Лица, обязанные работать отлично). – shtkuh

+0

Is IsSelectionAllowed свойство модели представления или типа Person? – Phil

ответ

1

Предполагая IsSelectionAllowed это свойство на модели представления, установленной на контексте данных, вам будет нужен относительный источник привязки - мы надеемся, что это правильно без каких-либо испытаний:

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

Связывание IsSelectionAllowed в вашем коде есть к типу Person.