2013-07-02 34 views
0

當標準ListBox被禁用時,其中的元素將變灰。它們仍然可見,儘管不可點擊。我想知道是否有可能,如果是這樣,當ListBox被禁用時如何隱藏這些項目。我不想從ItemSource中刪除元素或爲它們創建臨時存儲。禁用ListBox時隱藏ListBox中的項目

到目前爲止,我想過改變列表框的可見性,但是擺脫了整個事情(包括邊框線)。

+0

IsEnabled你怎麼綁定呢? – Tigran

+1

一個簡單的解決方案是有兩個列表框。一個完整的項目,第二個空的在同一個確切位置。當你需要隱藏它的第一個設置爲禁用/無形的項目,並設置第二可見/禁用,反之亦然 – Steve

+0

@Tigran我有一個ObservableCollection完全綁定到ListBox的ItemsSource在XAML字符串: '的ItemsSource =「{綁定數據源}」' –

回答

4

你可以綁定的ListBoxItemVisibilityListBox

<ListBox ItemsSource="{Binding DataSource}"> 
    <ListBox.Resources> 
     <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> 
    </ListBox.Resources> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="Visibility" Value="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType=ListBox}, Converter={StaticResource BooleanToVisibilityConverter}}" /> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
0

只需添加另一個列表框的形式,當你用它裏面的元素禁用列表框第一,隱藏它,然後顯示對方這本質上是一個空的灰色列表框的用戶。

然後,當您啓用方框後,隱藏空的並顯示真實的。

希望這會有所幫助。