我试图在事件发生时隐藏我的列表框项目,但使用转换器设置可见性我无法完全隐藏它们。 而不是消失变成一个薄的空盒子仍然可见并可在列表框上选择。
隐藏之前:http://i66.tinypic.com/34t96qc.jpg
改变隐藏:http://i66.tinypic.com/rhu23q.png(该框仍然可见且可点击)
{
"rules": {
".read": true,
".write": true
}
}
我还尝试将文本块可见性绑定到ListBoxItem可见性,但没有任何更改。
<ListBox ItemsSource="{Binding MyList}" Name="SourceListBox" SelectionMode="Multiple">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem x:Name="lbxItem">
<ListBoxItem.Visibility>
<MultiBinding Converter="{StaticResource AvailableItemsConverter}">
<Binding Path="Name" />
<Binding ElementName="trwEntities" Path="SelectedItem"/>
</MultiBinding>
</ListBoxItem.Visibility>
<TextBlock Text="{Binding Path=Name}" Visibility="{Binding ElementName=lbxItem, Path=Visibility}"/>
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:2)
使用样式上的转换器添加ItemContainerStyle来设置属性(Visibility)。
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Visibility" >
<Setter.Value>
<MultiBinding Converter="{StaticResource AvailableItemsConverter}">
<Binding Path="Name" />
<Binding ElementName="trwEntities" Path="SelectedItem"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
摆脱<ListBoxItem.Visibility>
项目,你将不再需要它。
答案 1 :(得分:0)
您只是在listboxitem崩溃中制作文本块 您需要使整个列表框崩溃或过滤掉视图中的项目 首先尝试折叠listboxitem 将Visibility属性添加到任何类中为每行显示数据。称之为RowVM。设置时确保它是一个propfull和raise raise属性。然后实现你的逻辑设置它。你的RowVM需要实现inotifypropertychanged 在列表框中,然后绑定到该列表框 类似的东西:
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Visbility" Value="{Binding Visibility}"/>
</Style>
</ListBox.ItemContainerStyle>
您将其放入列表框中,将其插入列表框的开头标记下方。