Скрыть содержимое в элементе списка в зависимости от свойства привязки в Silverlight

StackOverflow https://stackoverflow.com/questions/679575

  •  21-08-2019
  •  | 
  •  

Вопрос

У меня есть xaml, который выглядит так

<ListBox>
<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel>
            <TextBlock Text="{Binding Name}" />
            <StackPanel Orientation="Vertical" x:Name="contentPanel" >
            Content goes here...
            </StackPanel>
        </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>

Список привязывается к объекту с помощью логического свойства ShowContent.Как заставить Silverlight скрыть контентную панель, если объект с ShowContent имеет значение false?

Это было полезно?

Решение

Напишите BoolToVisibility IValueConveter и используйте его для привязки к свойству Visibility вашей contentPanel.

<StackPanel Visibility="{Binding YourBoolProperty, Converter={StaticResource boolToVisibilityResourceRef ..../>

Вы можете легко найти BoolToVisibility где угодно.

Проверьте IValueConveter, если вы новичок в этом. http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

Другие советы

Я бы рекомендовал установить видимость ListBoxItem на уровне ListBoxItem, иначе вы получите крошечные пустые элементы списка из-за значений заполнения и границ по умолчанию, например.

<ListBox>
     <ListBox.Resources>
          <Style TargetType="ListBoxItem">
               <Setter Property="Visibility" Value="{Binding MyItem.IsVisible, Converter={StaticResource BooleanToVisibilityConverter}}" />
          </Style>
     </ListBox.Resources>
     <ListBox.ItemTemplate>
          <DataTemplate>
               <StackPanel Orientation="Vertical">
                    <CheckBox Content="{Binding MyItemName}" IsChecked="{Binding IsVisible, Mode=TwoWay}"/>
               </StackPanel>
          </DataTemplate>
     </ListBox.ItemTemplate>
</ListBox>

Это скрывает весь ListBoxItem, а не только его содержимое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top