2013-07-02 3 views
0

표준 ListBox가 비활성화되면 요소가 회색으로 표시됩니다. 클릭 할 수 없더라도 여전히 볼 수 있습니다. 가능한 경우 ListBox를 사용할 수없는 경우 이러한 항목을 숨기는 방법을 알고 싶습니다. ItemSource에서 요소를 제거하거나 해당 요소를 임시 저장 영역으로 만들지는 않습니다.ListBox가 비활성화 된 경우 ListBox의 항목 숨기기

지금까지 ListBox의 가시성을 변경하는 방법을 생각했지만 테두리 선을 포함하여 전체를 제거했습니다.

+0

IsEnabledListBoxItemVisibility 바인딩 수 있을까? – Tigran

+1

간단한 해결책은 두 개의 목록 상자를 만드는 것입니다. 하나는 항목으로 가득 차고 두 번째는 같은 정확한 위치에 비어 있습니다. 첫 번째 세트의 항목을 숨기고 비활성화/비 표시로 설정하고 두 번째를 가시/비활성 및 viceversa로 설정해야하는 경우 – Steve

+0

@Tigran XAML의 ListBox ItemsSource에 바인딩 된 ObservableCollection이 가득합니다. : ItemsSource = "{바인딩 데이터 소스}" –

답변

4

당신은 어떻게 당신이 그들을 결합 할 ListBox

<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

양식에 다른 ListBox를 추가하기 만하면 그 안에있는 요소가있는 첫 번째 목록 상자를 숨기면 숨기고 나머지는 사용자에게 표시됩니다.이 목록은 기본적으로 빈 회색으로 표시됩니다.

상자를 다시 활성화하면 빈 상자를 숨기고 실제 상자를 표시합니다.

희망이 도움이됩니다.

관련 문제