Ocultar conteúdo no item listbox dependendo de uma propriedade de ligação no Silverlight

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

  •  21-08-2019
  •  | 
  •  

Pergunta

Eu tenho XAML que lookes como este

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

Os liga ListBox para um objeto com uma propriedade bool chamado showContent. Como faço para obter o Silverlight para esconder a ContentPanel se o objeto com showContent é falsa?

Foi útil?

Solução

Escrever um BoolToVisibility IValueConveter e usá-lo para ligar para a propriedade de visibilidade do seu ContentPanel

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

Você pode encontrar uma BoolToVisibility muito fácil em qualquer lugar.

Verifique IValueConveter se você é novo para isso. http://msdn.microsoft.com/en- us / library / system.windows.data.ivalueconverter.aspx

Outras dicas

Eu recomendaria definindo a visibilidade ListBoxItem no nível ListBoxItem ou você vai acabar com pequenos itens de caixa de listagem vazias devido ao preenchimento padrão e valores de fronteira por exemplo.

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

Isto esconde todo o ListBoxItem não apenas o conteúdo do mesmo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top