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

  • Booredatwork.com

    Booredatwork

    5 Ocak 2009
  • RealPapaPit

    RealPapaPit

    16 Mart 2009
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008