我们如何在wp8中为用户控件提供不同的Tap事件功能?

时间:2014-11-05 12:18:29

标签: c# xaml windows-phone-8 user-controls

在我的Windows Phone 8应用程序中,我使用一个usercontrol在所有页面中显示。 UserControl XAML代码:

<Canvas x:Name="ExpiryPopUp_Container" Margin="0,0,0,0" Background="Transparent" Width="Auto" Height="Auto">
    <Border x:Name="Delete" Background="#FFFFFFFF" CornerRadius="10,10,10,10" BorderBrush="#8ca5b9" BorderThickness="2" Height="180" Canvas.Left="58" Canvas.Top="320" Grid.Row="1" Width="360">
        <Canvas>
            <Border Background="{StaticResource LeftNavBackground}" Height="50" CornerRadius="10,10,0,0" Width="356">
                <TextBlock FontSize="26" TextAlignment="Center" FontFamily="/Assets/Fonts/OpenSans-Regular.ttf#Open Sans Regular" Text="Alert" Width="356" Canvas.Top="10" Height="28"/>
            </Border>
            <TextBlock Text="Oops! Something went wrong with network connection" TextWrapping="Wrap" FontSize="22" FontFamily="/Assets/Fonts/OpenSans-Regular.ttf#Open Sans Regular" TextAlignment="Center" Foreground="{StaticResource BlueText}" Canvas.Top="62" Width="356"/>
            <Border x:Name="BorderOk" Background="{StaticResource buttonBackground}" Height="40" Width="98" Canvas.Left="132" Canvas.Top="125" Tap="BorderOk_Tap_1">
                <TextBlock TextAlignment="Center" Text="Ok" FontSize="26" FontFamily="/Assets/Fonts/OpenSans-Regular.ttf#Open Sans Regular" Canvas.Top="14" Margin="10,5,10,2"/>
            </Border>
        </Canvas>
    </Border>
</Canvas>

对于名称为BorderOk的边框,有Tap事件。我在整个应用程序中使用此用户控件,几乎在所有页面中。一旦用户点击边框,它将导航到MainPage.xaml,但我的问题是在某些页面中我希望它不导航(意味着要更改的点击事件的功能)。那么我可以通过使用相同的usercontrol来实现这一点吗?如果是这样,该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以做的一件事是向用户控件添加一个参数,例如&#34; shouldNavigate&#34;并在每次使用它时设置它(或者具有默认值true并在特殊情况下将其更改为false)。在Tap事件中使用此参数的值。

已经多次讨论了SO,请查看:How to read a passed parameter in a WPF UserControl?