문제

행/항목을 선택한 ListView가 있습니다. 이것은 행에 이미지를 표시하는 Datatrigger에 연결됩니다. 이미지는 행을 선택할 때만 표시해야합니다.

이 부분은 잘 작동하지만 텍스트 상자와 같은 다른 것으로 초점을 이동하거나 메시지 상자가 표시되면 ListViewItem은 초점을 잃습니다. 즉, 행의 하이라이트는 더 이상 표시되지 않습니다. 문제는 내 이미지가 여전히 남아 있다는 것입니다. ListView가 초점을 잃으면 숨겨 지거나 붕괴되어야합니다 ... ListView에서 다른 항목/행을 선택하면 잘 작동합니다.

누구든지 이것에 도움을 줄 수 있습니까?

<Style x:Key="deleteImageStyle" TargetType="{x:Type Image}">
    <Setter Property="Source" Value="Resources/iconDelete.png" />
    <Setter Property="Margin" Value="0,2,5,0" />
    <Setter Property="Height" Value="16" />
    <Setter Property="Width" Value="16" />
    <Setter Property="HorizontalAlignment" Value="Right" />
    <Setter Property="VerticalAlignment" Value="Top" />
    <Setter Property="Cursor" Value="Hand" />
    <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="Hidden"/>
        </DataTrigger>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Visibility" Value="Hidden" />
        </Trigger>
    </Style.Triggers>
</Style>

문안 인사

트래비스 푸크

도움이 되었습니까?

해결책

나는 당신이 혼란스러워하고 ISFOCUSED라고 생각합니다.

트리거를 바인딩하여 실험하십시오 isfocused 원하는 결과를 얻기 위해 선택적으로 선택되지 않습니다.

내가 올바르게 이해한다면, 당신은 isselected와 isfocused가 모두 사실이라면 이미지가 보이기를 원합니다. 그렇지 않으면 숨겨져 있습니다.

이를 수행하는 한 가지 방법은 기본 가시성을 보이도록 설정 한 다음 숨겨진 상태로 가시성을 설정하는 두 개의 트리거를 추가하는 것입니다. 하나는 isselected = false의 트리거, isfocused = false의 다른 트리거입니다.

또는 그 반대, 기본 가시성을 숨겨 지도록 설정하고 isselected = true 및 isfocused = true를 사용하여 다중 지거를 사용하여 가시 가시 정보를 설정하려면 true를 사용합니다.

다른 팁

@버블 랩,

정보에 감사드립니다. 이것은 문제를 해결했습니다. 아래에 따라 기본값이 적용되지 않는 것처럼 두 시나리오를 추가해야했습니다. 그러나 아직 멀티 트리거 방법을 시도하지는 않았지만 나중에 수행 할 것입니다.

이것이 내가 결국 결국 끝났던 것입니다.

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

도와 주셔서 감사합니다. 지금은 제 문제를 지나갈 것입니다. 나는 내 isenabled 트리거가 아마도 중복되었다고 생각합니다.

감사

트래비스 푸크

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top