簡體   English   中英

單擊wpf中的事件發送器

[英]Click Event Sender in wpf

我正在設計一個wpf應用程序。 我編寫了一個網格(有35個文本塊)范圍的上下文菜單。 當我單擊鼠標右鍵時,我需要了解我單擊了哪個文本塊。 但是點擊事件給centext菜單作為發送者。 我如何確定用戶單擊鼠標右鍵在哪個文本塊上?

我的XAML代碼----------------------------------------------- ----------------:

<Grid>
        <Grid.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Hafta İçi" x:Name="btnWeekDay" Click="btnWeekDay_Click" />
                <MenuItem Header="Cuma" x:Name="btnFriday" Click="btnFriday_Click"/>
                <MenuItem Header="Cumartesi" x:Name="btnSaturday" Click="btnSaturday_Click"/>
                <MenuItem Header="Pazar" x:Name="btnSunday" Click="btnSunday_Click"/>
                <MenuItem Header="İdari İzin" x:Name="btnAdminLeave" Click="btnAdminLeave_Click"/>
                <MenuItem Header="Bayram/Tatil" x:Name="btnHoliday" Click="btnHoliday_Click" a/>
            </ContextMenu>
        </Grid.ContextMenu>

我的C#代碼-------------:

private void btnWeekDay_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(sender + e.Source.ToString());
        }

我找到了答案。 1.我將contextmenu從網格移到了文本塊。 2.我觸發了contextmenuopening事件,並捕獲了單擊rght鼠標按鈕的texblock。

這是xaml代碼。

    <Page.Resources>
        <Style x:Key="txtBlockStyle" TargetType="{x:Type TextBlock}">
            <Setter Property="TextBlock.Background" Value="AliceBlue"/>
        </Style>
        <Style x:Key="borderStyle" TargetType="{x:Type Border}">
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush" Value="DarkGreen"/>
        </Style>
        <ContextMenu x:Key="txtBlockContextMenu">
            <MenuItem Header="Hafta İçi" x:Name="btnWeekDay" Click="btnWeekDay_Click" />
            <MenuItem Header="Cuma" x:Name="btnFriday" Click="btnFriday_Click"/>
            <MenuItem Header="Cumartesi" x:Name="btnSaturday" Click="btnSaturday_Click"/>
            <MenuItem Header="Pazar" x:Name="btnSunday" Click="btnSunday_Click"/>
            <MenuItem Header="İdari İzin" x:Name="btnAdminLeave" Click="btnAdminLeave_Click"/>
            <MenuItem Header="Bayram/Tatil" x:Name="btnHoliday" Click="btnHoliday_Click" />
        </ContextMenu>
    </Page.Resources>
.....
    <Border Style="{StaticResource borderStyle}" Grid.Column="0" Grid.Row="1" >
                <TextBlock x:Name="txtDate1"  ContextMenuOpening="CustomContextMenuOpening" ContextMenu="{StaticResource ResourceKey=txtBlockContextMenu}"></TextBlock>
            </Border>

這是后面的代碼。

TextBlock targetTextBlock;

private void CustomContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            targetTextBlock = (TextBlock)sender;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM