표준 WPF 목록 상자를 동적으로 채우려 고하고 목록 상자의 각 항목에 대해 클릭 할 때 명령을 시작하려고합니다. 현재 채울 수있는 작업 목록 상자가 있으며 각 항목은 올바른 명령을 실행하지만 명령을 실행하려면 목록 항목을 두 번 클릭해야합니다. 즉, 한 번 클릭하여 항목을 선택한 다음 실제 텍스트를 클릭하여 명령을 실행합니다.명령을 실행하기 위해 WPF 목록 상자 항목을 두 번 클릭해야하는 이유는 무엇입니까?
기본적으로<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Margin="4,2,4,2">
<Hyperlink TextDecorations="None" Command="MyCommands:CommandsRegistry.OpenPanel">
<TextBlock Text="{Binding}" Margin="4,2,4,2"/>
</Hyperlink>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
, 어떻게 두 번 클릭 할 필요를 제거합니까 : 목록으로
가 동적으로 생성되고, 나는 목록 항목에 대한 데이터 템플릿을 생성했다? 목록 상자 항목을 선택하면 이벤트 트리거를 사용하여 하이퍼 링크 요소의 click 이벤트를 발생 시키려고 시도했지만 작동하도록 설정할 수는 없습니다. 또는 목록 상자를 동적으로 채우고 각 목록 항목에 명령을 첨부하는 더 나은 방법이 있습니까?감사합니다.
예, 당신 말이 맞아, 명령은 하이퍼 링크 텍스트를 클릭 불을 수행하지만 아무것도하지의 모양을 제공합니다. Execute 메서드 명령은 작업을 수행하기 위해 선택한 목록 항목이 필요하지만 하이퍼 링크 텍스트 만 누르면 목록 항목이 선택되지 않으므로 작업을 수행 할 수 없습니다. 따라서 목록 항목 IsSelected 속성을 변경하는 하이퍼 링크의 데이터 트리거가 작동합니까? 하이퍼 링크 요소가 목록 항목의 하위 항목 인 것은 문제입니까? 감사합니다. – Donal
@ 도날뇽, 아이템을 선택하지 않았지만 답변을 가능한 한 업데이트했습니다. –
좋아요! 고마워, 코드가 작동했습니다. 웬일인지 나는 방금 CommandParameter를 사용하지 않았다. 조상 찾기 바인딩은 정말 유용합니다. – Donal