DataTrigger не стреляет - PullRequest
       23

DataTrigger не стреляет

0 голосов
/ 20 февраля 2012

У меня есть массив класса Person во ViewModel, и я хочу показать их имена в таблице. У меня также есть столбец с флажками. Это мой Просмотр части:

<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 не стреляет?

1 Ответ

1 голос
/ 20 февраля 2012

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

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

Привязка IsSelectionAllowed в вашем кодеотносится к типу Person.

...