이것은 아마도 쉬운 해결 방법 일지 모르지만 나는 이벤트에 익숙하지 않아서 물어볼 것입니다.WPF의 버블 링 이벤트? 간단한 질문
ListBoxItem이있는 ListBox가 있습니다. 이러한 ListBoxItem은 변경 될 수 있도록 데이터 소스에 바인딩됩니다. MouseDown 동작이 이러한 ListBoxItem 중 하나에서 수행 될 때 발생해야하는 MouseDown 이벤트가 필요합니다 (드래그 앤 드롭을 수행하기 때문에). 값이 변경되기 때문에, 나는 같은 XAML에서 함께 이벤트를 연결할 것으로 예상 할 수없는
<ListBox Name="ListBox1">
<ListBoxItem MouseDown="MouseDownEventName">Item A</ListBoxItem>
<ListBoxItem MouseDown="MouseDownEventName">Item B</ListBoxItem>
<ListBoxItem MouseDown="MouseDownEventName">Item C</ListBoxItem>
</ListBox>
이 내가 정적 값이 있다면 쉬운 것입니다,하지만 목록 상자의 값이 변경 때문에, 내가 선호 다음 ListBoxItem의이 선택 될 때, 그것은 버블이 MouseDownEventName까지 이벤트 것
<ListBox Name="ListBox1" MouseDown="MouseDownEventName">
//Binded Values
</ListBox>
그런 다음 XAML을 작성하고 내가 그 시간에 ListBox1.SelectedItem을 잡을 수 있으며, 문제는,이 권리를 시도하고있다 지금은 작동하지만 작동하지 않습니다. MouseDown을 처리하는 코드는 다음과 같습니다. MouseDown은 해당 항목이 MouseDown 된 것을 나타 내기 위해 즉시 레이블 내용을 다시 작성하는 것입니다.
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
private void ListBox_MouseDown(object sender, RoutedEventArgs e)
{
ListBox box = (ListBox)sender;
if (box != null && box.SelectedItem != null)
{
DragDrop.DoDragDrop(box, ItemListBox.SelectedItem, DragDropEffects.Move);
label1.Content = "MouseDown Event Fired";
}
}
}
이렇게 정확하게 이해하고 있는지 확인하기 위해 내 목록을 작성할 원본을 지정하고 구조를 지정하고 각 이벤트를 트리거 할 수있는 이벤트를 선언 할 수 있습니까? 그것은 BTW 일했다,하지만 난 그냥 옳은 이유를 위해 그것을 이해하고 있는지 확인하고 싶습니다 – TheJediCowboy
그것을 듣고 다행! 그래, 근본적으로 그 생각이야. CSS와 같은 HTML 코드를 상상해보십시오 - 수정하려는 태그의 종류를 지정하고 태그에 다른 속성과 속성을 적용하십시오. 이 경우 각 ListBoxItem에 대해 EventSetter를 추가했습니다. 이렇게하면 각 ListBoxItem에 대해 Clicked 이벤트 처리기를 지정하는 수고를 덜 수 있습니다. –