我有一个数据绑定列表框,它在类型为wrappanel的datatemplate中生成项目,其中包含其他控件。当我改变可见性以不同地影响wrappanel中的控件时,我希望有这种行为
<WrapPanel Orientation="Horizontal" Tag="{Binding .}" HorizontalAlignment="Stretch" Visibility="{Binding editMode, Converter={StaticResource VisibilityConverter}}">
<Label Width="150" Content="{Binding Path=avaiableAttribute.Text}" Name="lblName"/>
<Label Width="150"
Content="{Binding Path=informationItem.ItemString, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Initialized="Label_Initialized"
Name="lblText" />
<ContentPresenter MinWidth="200" MaxHeight="200" Content="{Binding ., Converter={StaticResource InformationItemConverter}, Mode=TwoWay}" HorizontalAlignment="Stretch"
Name="cpValue"
Initialized="ContentPresenter_Initialized"/>
<WrapPanel.Style>
<Style TargetType="{x:Type WrapPanel}">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible" >
<Trigger.Setters>
<Setter TargetName="lblText" Property="Visibility" Value="Collapsed" />
<Setter TargetName="cpValue" Property="Visibility" Value="Visible" />
</Trigger.Setters>
</Trigger>
</Style.Triggers>
</Style>
</WrapPanel.Style>
</WrapPanel>
我刚收到以下构建错误
属性'targetname'不代表'setter'的有效目标,因为元素
答案 0 :(得分:1)
使用Setter
时,TargetName
仅适用于Template
中的元素。这意味着您的Trigger
必须存在于DataTemplate
或ControlTemplate
中。执行您想要执行的操作的最简单方法是为IValueConverter
的反转创建自己的BooleanToVisibilityConverter
(即,当值为true时返回Visibility.Collapsed
。)