我如何在XAML中执行此操作?

Ric*_*zak 2 wpf xaml wpf-controls

我想在XAML中用触发器执行此操作,我该怎么做?

    If ListBox1.SelectedIndex > -1 Then
        Border1.Visibility = Windows.Visibility.Visible
    Else
        Border1.Visibility = Windows.Visibility.Hidden
    End If
Run Code Online (Sandbox Code Playgroud)

此XAML代码不起作用.SelectedIndex成员无效,因为它没有合格的类型名称.

            <ListBox.Triggers>
                <Trigger SourceName="ListBox1" Property="SelectedIndex" Value="False">
                    <Setter TargetName="Border1" Property="Visibilty" Value="Hidden" />
                </Trigger>
            </ListBox.Triggers>
Run Code Online (Sandbox Code Playgroud)

vik*_*iky 6

你能告诉我你是如何在xaml中做到这一点的?

如果出现此错误消息,您还需要提及类型名称以及触发器内的属性.

<Trigger SourceName="ListBox1" Property="ComboBox.SelectedIndex" Value="-1">
    <Setter TargetName="Border1" Property="Border.Visibility" Value="Hidden" />
</Trigger>
Run Code Online (Sandbox Code Playgroud)

此外,您似乎在<ListBox.Triggers>集合中添加了Trigger ,但您只能将EventTrigger添加到此集合中.所以你需要为ListBox设置一个Style来为它添加一个Trigger,你的Border元素应该在ListBox的ControlTemplate中,但在你的情况下,Border似乎在ListBox之外,所以声明一个样式将不是一个解决方案.相反,你应该在ValueConverter的帮助下使用Binding with SelectIndex属性(比如IndexToVisibilityConverter).您需要在代码隐藏中定义此转换器并将其添加到资源中.

<Border Visibility={Binding Path=SelectedIndex, ElementName=ListBox1, Converter={StaticResource IndexToVisibilityConverter}}/>
Run Code Online (Sandbox Code Playgroud)

选择完全取决于您的要求.