【问题标题】:ChangePropertyAction to modify Visibility not working in ListBoxItem DataTemplateChangePropertyAction 修改可见性在 ListBoxItem DataTemplate 中不起作用
【发布时间】:2011-04-18 06:38:03
【问题描述】:

我正在尝试通过 ChangePropertyAction 更改 ListBoxItem 模板中控件的可见性(基于在父列表框中选择的控件),但下面的代码不起作用。我尝试在触发器上设置 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>
[...]

【问题讨论】:

    标签: c# wpf xaml wpf-controls binding


    【解决方案1】:

    除非您使用自定义列表框项容器,否则您可以在 FindAncestor 模式下使用 RelativeSource 绑定将 StackPanel 的 Visibility 属性简单地绑定到容器 ListBoxItem 的 IsSelected 属性。

    【讨论】:

      猜你喜欢
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 2013-06-26
      • 2017-08-02
      相关资源
      最近更新 更多