SORU
29 EKİM 2008, ÇARŞAMBA


WPF ListBox öğeleri için bir DataTemplate içerisinde İsSelected için Tetikleyici

Bir liste kutusu var ve bunun için aşağıdaki ItemTemplate var:

<DataTemplate x:Key="ScenarioItemTemplate">
    <Border Margin="5,0,5,0"
            Background="#FF3C3B3B"
            BorderBrush="#FF797878"
            BorderThickness="2"
            CornerRadius="5">
        <DockPanel>
            <DockPanel DockPanel.Dock="Top"
                       Margin="0,2,0,0">
                <Button HorizontalAlignment="Left"
                        DockPanel.Dock="Left"
                        FontWeight="Heavy"
                        Foreground="White" />
                <Label Content="{Binding Path=Name}"
                       DockPanel.Dock="Left"
                       FontWeight="Heavy"
                       Foreground="white" />
                <Label HorizontalAlignment="Right"
                       Background="#FF3C3B3B"
                       Content="X"
                       DockPanel.Dock="Left"
                       FontWeight="Heavy"
                       Foreground="White" />
            </DockPanel>
            <ContentControl Name="designerContent"
                            Visibility="Collapsed"
                            MinHeight="100"
                            Margin="2,0,2,2"
                            Content="{Binding Path=DesignerInstance}"
                            Background="#FF999898">
            </ContentControl>
        </DockPanel>
    </Border>
</DataTemplate>

Bu ContentControl gördüğünüz gibi Görünürlük set çöktü.

Görünürlüğünü ayarlamak neden olan bir tetikleyici tanımlamak için ihtiyacım var"" . Görünür

Öğesini seçtiğinizde, ama çözemiyorum.

Herhangi bir fikir?

GÜNCELLEME: tabii ki sadece DataTemplate yinelenen ve tetikleyiciler ekleyebilirim ya birini ya da diğerini kullanmak söz konusu Liste, ama çoğaltma önlemek için istiyorum bu kodu.

CEVAP
29 EKİM 2008, ÇARŞAMBA


Tetikleyici kabını (ListBoxİtem) seçili olduğunda harekete ContentControl senin gibi stil

<ContentControl 
    x:Name="designerContent"
    MinHeight="100"
    Margin="2,0,2,2"
    Content="{Binding Path=DesignerInstance}"
    Background="#FF999898">
    <ContentControl.Style>
        <Style TargetType="{x:Type ContentControl}">
            <Setter Property="Visibility" Value="Collapsed"/>
            <Style.Triggers>
                <DataTrigger
                        Binding="{Binding
                            RelativeSource={RelativeSource
                                Mode=FindAncestor,
                                AncestorType={x:Type ListBoxItem}},
                                Path=IsSelected}"
                        Value="True">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ContentControl.Style>
</ContentControl>

Alternatif olarak, şablonun kendisi için tetiği ekleyin ve adını kontrol başvurusu yapabilirsiniz bence. Bu teknik hafızasından yazacak kadar iyi ve işe yarar varsayalım bilmiyorum, ama şöyle bir şey var:

<DataTemplate x:Key="ScenarioItemTemplate">
    <DataTemplate.Triggers>
        <DataTrigger
                Binding="{Binding
                    RelativeSource={RelativeSource
                        Mode=FindAncestor,
                        AncestorType={x:Type ListBoxItem}},
                        Path=IsSelected}"
                Value="True">
            <Setter
                TargetName="designerContent"
                Property="Visibility"
                Value="Visible"/>
        </DataTrigger>
    </DataTemplate.Triggers>

    ...
</DataTemplate>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013
  • super1988guy

    super1988guy

    9 Aralık 2007
  • TheFlightsuit

    TheFlightsui

    22 HAZİRAN 2009