안녕하세요 Stackoverflowers,목록 상자 선택이 다른 마우스 이벤트를 숨김
나는 System.Windows.Control.ListBox가 있습니다. 그것은 훌륭한 일을하고 있지만 특정 유형의 아이템을 선택할 때 몇 가지 행동을 취하고 싶습니다.
ListBox의 View Model (Foo)이 내가 원하는 작업 (필요한 경우 다른 ViewModel : Bar에서 오는 일부 데이터)을 모르기 때문에 SelectedItem의 bind 속성에서이 작업을 수행 할 수 없습니다.
내 두 ZOT가
내가 앞을 향해 열린 길을 건너 Interaction.Triggers를 사용 ZOT하는 푸과 바에서 이벤트를 클릭 푸과 바
모두의 콘텐츠에 액세스하는 뷰 모델을 위해, 더 큰 클래스 ZOT의 필드입니다 언급, EventTrigger 및 InvokeCommandAction. Bar (캔버스)에 잘 작동합니다. 그러나 나는 Listbox에 문제가있다.SelectionChanged, MouseDown 및 Click 이벤트를 테스트 한 후 ListBox를 감싸는 격자를 클릭하면 MouseDown이 트리거되지만 ListBox를 클릭하면 트리거되지 않은 것처럼 보입니다. 목록 상자의 포함 된 선택 항목이 다른 이벤트와 충돌하는 것 같습니다.
다른 사람이 선택한 항목에 따라 다른보기 모델에서 특정 작업을 수행 할 생각이 있습니까?
덕분에 많은
편집 : 여기
주에서 (ToolboxView.xaml에서) 목록 상자에 대한 XAML 여기
d:DataContext="{d:DesignInstance viewModels:ToolboxViewModel}">
<Grid>
<ListBox
ItemsSource="{Binding Tools}"
SelectedItem="{Binding SelectedTool}"
x:Name="ToolView" >
<ListBox.ItemTemplate>
<DataTemplate DataType="interfaces:IBuilder">
<TextBlock
FontWeight="DemiBold"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
이 목록 상자에서 이벤트이며, window xaml (어떤 모델이리스트 박스 뷰 모델을 가지고 있는지, 나는 왜 아래에 설명하는지). 그러나 이벤트는 트리거되지 않습니다. 같은 파일에서 3 개의 유사한 이벤트가 완벽하게 작동합니다 (캔버스에서). SelectionChanged 대신 MouseDown을 사용하려고했는데 목록 상자가 포함 된 표를 클릭 할 때 트리거되지만 목록 상자를 클릭하면 트리거되지 않습니다.
<DockPanel>
<views:ToolboxView DockPanel.Dock="Left"
Width="120"
IsHitTestVisible="True"
DataContext="{Binding ToolBoxViewModel}"
x:Name="ToolboxView">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding Path=DataContext.SelectionChangedCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
CommandParameter="{Binding ElementName=ToolboxOverlayView}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
내가 "임베디드 선택"이라는 이제 어떻게 (MainWindow.xaml에서)
내가 목록 상자 내부의 요소를 강조하고 선택할 수있는 목록 상자의 동작입니다. 이것은 위의 코드와 완벽하게 작동합니다 (필자의 도구를 선택할 수 있으며 그에 따라 ViewModel에 바인딩 된 속성이 변경됩니다). 내가 뭘 하려는지 ListBox 안에 요소의 특정 범주가 선택되면 특별한 일을 할 SelectionChanged 이벤트를 발생시키는 것입니다.
내가 목록 상자의 ItemSelected에 바인더 제본 재산의 세터에 불과하다 목록 상자 뷰 모델에서 알 수없는 datas를 필요로 할 수있는 작업에서이 작업을 수행 할 수내가 목록 상자의 뷰 모델을 보유하고 MainWindow를보기 모델을 가지고 왜 나는 주 창보기 모델 (및 다른보기 모델)에서 SelectionChanged 이벤트를 가져 오려고합니다.
명확하지 않은 경우 알려주세요.
xaml이 (가) 있습니다. 이것은 null 일 수 있습니다. 예를 들면 배경 코드는 우리가 코드를 표시하지 않았기 때문에 잘 모르겠습니다. – nkoniishvt
실제로 무엇을 하려는지 구체적으로 말하고 코드를 보여주십시오. 또한 내가하고 싶은 마지막 일은 자신의 감정을 무효화하는 것입니다. 그러나 "임베디드 선택"이 무엇인지, 왜 그것이 당신에게 그 특별한 감정을주는 지 모르겠습니다. –
@nkoniishvt 더 많은 정보를 얻기 위해 편집했습니다. – Csi