ChangePropertyAction для изменения видимости не работает в ListBoxItem DataTemplate - PullRequest
2 голосов
/ 28 сентября 2010

Я пытаюсь изменить видимость элемента управления в шаблоне ListBoxItem (на основе его, выбранного в родительском списке) через ChangePropertyAction, но приведенный ниже код не работает. Я попытался поиграться с установкой TargetName на триггере или установкой видимости элемента управления по умолчанию через стиль. Я отладил привязку через DebugConvert и проверил, что IsSelected правильно установлено в true, но все равно не работает. Кто-нибудь может объяснить мне, почему это не работает и как я могу это исправить?

<ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition/>
                                    <ColumnDefinition/>
                                    <ColumnDefinition/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Text="{Binding PersonalData.LastName}" FontSize="20" FontWeight="Bold"  Grid.Column="0"/>
                                <TextBlock FontSize="20" Text="{Binding PersonalData.FirstName}" Grid.Column="1" />
                                <StackPanel x:Name="buttonStackPanel" Orientation="Horizontal" Grid.Column="2" Visibility="Collapsed">
                                    <Interactivity:Interaction.Triggers>
                                        <ei:DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}, Mode=FindAncestor}, Path=IsSelected, Converter={StaticResource DebugConverter}}">
                                            <ei:ChangePropertyAction PropertyName="Visibility">
                                                <ei:ChangePropertyAction.Value>
                                                    <Visibility>Visible</Visibility>
                                                </ei:ChangePropertyAction.Value>
                                            </ei:ChangePropertyAction>
                                        </ei:DataTrigger>
                                    </Interactivity:Interaction.Triggers>
                                    <Button Content="Do Something"></Button>
                                </StackPanel>
                            </Grid>
[...]

1 Ответ

0 голосов
/ 22 февраля 2011

Если вы не используете пользовательский контейнер элемента списка, вы можете просто привязать свойство Visibility StackPanel к свойству IsSelected ListBoxItem контейнера, используя привязку RelativeSource в режиме FindAncestor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...