WPF Trigger لـ IsSelected في DataTemplate لعناصر ListBox


0 Answers

@ مات ، شكرا لك!

فقط كان لا بد من إضافة محفز لـ IsSelected == false كذلك ، والآن يعمل مثل السحر!

<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>
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="False">
            <Setter Property="Visibility" Value="Collapsed"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

Question

لدي قائمة ، ولدي ItemTemplate التالية لها:

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

كما ترى ، تم ضبط مستوى الرؤية على ContentControl.

أحتاج إلى تحديد مشغل يؤدي إلى تعيين مستوى الرؤية على "مرئي"

عندما يتم تحديد ListItem ، ولكن لا يمكنني معرفة ذلك.

أيه أفكار؟

استكمال: بالطبع يمكنني ببساطة تكرار DataTemplate وإضافة المشغلات إلى ListBox في السؤال لاستخدام إما واحد أو الآخر ، ولكن أريد منع تكرار هذا الرمز.




Related