Verstecken Inhalt in Listbox-Elemente auf einer Bindungseigenschaft in Silverlight abhängig

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

  •  21-08-2019
  •  | 
  •  

Frage

Ich habe XAML, die wie folgt lookes

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

Die listbox bindet an ein Objekt mit einer Bool Eigenschaft namens ShowContent. Wie erhalte ich den Silverlight-Content zu verstecken, wenn das Objekt mit ShowContent falsch ist?

War es hilfreich?

Lösung

Schreiben Sie eine BoolToVisibility IValueConveter und es verwenden, um die Eigenschaft Sichtbarkeit Ihrer Content zu binden

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

Sie können eine BoolToVisibility ziemlich einfach überall.

Überprüfen Sie IValueConveter, wenn Sie das neu sind. http://msdn.microsoft.com/en- us / library / system.windows.data.ivalueconverter.aspx

Andere Tipps

Ich würde empfehlen, die ListBoxItem Sichtbarkeit auf der ListBoxItem Ebene einstellen, oder Sie werden mit kleinen leeren Listbox Elementen aufgrund des Standard Polsterung am Ende und Grenzwerte z.

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

Das blendet die gesamte ListBoxItem nicht nur den Inhalt davon.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top