2013-08-12 2 views
0

Можно ли вызвать событие, например, указанное в коде.Вызов события в коде C#

private void Item_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 

} 

Объект Я хочу вызвать его на это ListView.Items [listView.Items.Count-1]

XAML

<ListView.ItemContainerStyle> 
    <Style TargetType="ListViewItem"> 
     <EventSetter Event="PreviewMouseLeftButtonDown" 
      Handler="ListViewItem_PreviewMouseLeftButtonDown" /> 
    </Style> 
</ListView.ItemContainerStyle> 

Так что моя попытка назвать это выглядит так, но он не работает.

Item_PreviewMouseLeftButtonDown(listView.Items[slideListView.Items.Count-1], null); 
+2

Не работает как? –

+0

Можете ли вы объяснить, что вы подразумеваете под «не работает»? – JaredPar

+0

Извините, что в действии, которое обычно происходит, когда это называется, не происходит. – kev3kev3

ответ

6

Как правило, плохой практикой является вызов обработчика событий напрямую или «подделка» события. Вместо этого, почему бы не обернуть функциональность вашего обработчика и не поместить его в другой метод, который вызовет обработчик события. Затем вы можете вызвать этот метод из любого другого места.

private void PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    // Doing something 
} 

=>

private DoingSomething() 
{ 
    // Doing something 
} 

private void PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    DoingSomething(); 
} 

Теперь вы можете позвонить DoingSomething() из любого места.

+0

Да, я, вероятно, сделаю это, просто хочу знать, есть ли простой способ просто запустить мероприятие. Спасибо – kev3kev3

+0

Это то, что я делаю для многих вещей. Подобно «StartProcess()», который можно вызвать из любого места, а также обработчик события нажатия кнопки. – ganders

Смежные вопросы