我有一個XAML列表視圖定義正是如此,隨着對「的PreviewMouseRightButtonUp」和「的PreviewMouseLeftButtonUp」事件定義的事件:我可以在XAML中控制訂單點擊事件觸發嗎?
<ListView Name="lstItems" DockPanel.Dock="Top" >
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource ListViewItemStyle}">
<EventSetter Event="PreviewMouseRightButtonUp"
Handler="OnListViewItemPreviewMouseRightButtonUp" />
<EventSetter Event="PreviewMouseLeftButtonUp"
Handler="OnListViewItemPreviewMouseLeftButtonUp" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
我也有一個類的objRow,從用戶控件繼承,上面有一個按鈕:
<DockPanel LastChildFill="True">
<Button Name="btnOpen" DockPanel.Dock="Left" BorderBrush="Transparent" Style="{StaticResource FolderButton}" IsTabStop="False"/>
</DockPanel>
最後,在ListView的代碼隱藏我打電話,我在按鈕的「單擊」事件設置事件的方法:
foreach (var obj_items in objs)
{
ObjRow item = new ObjRow();
item.btnOpen.Click += new RoutedEventHandler(btnOpen_Click);
controls.Add(item);
}
lstItems.ItemsSource = controls;
這兩起事件都如預期般發生。以前,我沒有「PreviewMouseLeftButtonUp」事件,所以左擊按鈕只會觸發「Click」事件。但是,添加該事件後,左鍵單擊該按鈕將觸發兩者 - 首先是列表視圖中的「PreviewMouseLeftButtonUp」,然後是UserControl中的「Click」。
我正在尋找一種方法來忽略「預覽」事件,當按鈕被點擊時,只觸發「點擊」事件。有沒有辦法讓這些不同的事件在一起好起來?或者我需要找到另一個地方放置「PreviewMouseLeftButtonUp」代碼?
當你有什麼東西(我們不知道是什麼)與隧道鼠標點擊相關的事件相關聯的時候,有人點擊'ListView'裏面的'Button'時,你會期待什麼?你可以使用[冒泡](https://msdn.microsoft.com/en-us/library/ms742806(v = vs.110).aspx)事件,如果按鈕被點擊,你不應該得到'MouseUp'事件。 – Sinatr
[一些簡短而有趣的閱讀](http://stackoverflow.com/a/1460266/3283203)與該主題相關。 '預覽'自然被稱爲第一,所以也許你會想用標準替代品替代它。 – Kilazur
@Sinatr總計WPF新手,在這裏 - 這正是我需要的。沒有意識到每個「預覽」事件都對應於一個等效的非預覽事件。謝謝! –