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)
你能告诉我你是如何在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)
选择完全取决于您的要求.