列表框项目不会消失

时间:2018-04-14 14:18:41

标签: c# wpf

我试图在事件发生时隐藏我的列表框项目,但使用转换器设置可见性我无法完全隐藏它们。 而不是消失变成一个薄的空盒子仍然可见并可在列表框上选择。

隐藏之前: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>

2 个答案:

答案 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>

您将其放入列表框中,将其插入列表框的开头标记下方。