您可以通过多种方式处理此问题。如果您想要一种可靠且可重用的方法,您可以在要隐藏的按钮的可见性上使用转换器。 XAML 将是这样的:
<Page.Resources>
<Converters:HiddenWhenPhoneConverter x:Name="HidePhone" />
</Page.Resources>
<Button Visibility="{Binding, Converter={StaticResource PhoneHide}}" />
然后你会有一个类似这样的转换器:
public class HiddenWhenPhoneConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
#if WINDOWS_PHONE_APP
return Visibility.Collapsed;
#else
return Visibility.Visible;
#endif
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{ throw new NotImplementedException(); }
}
public class VisibleWhenPhoneConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
#if WINDOWS_PHONE_APP
return Visibility.Visible;
#else
return Visibility.Collapsed;
#endif
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{ throw new NotImplementedException(); }
}
记住:从性能的角度来看,这只会在视图加载时执行。所以,它应该是一个最小的影响,并给你你想要的结果。还有一件事。如果您没有为Button 或按钮的父级DataContext 设置一些值,转换器将不会触发。您可以通过在 Button 或其父级上设置 DataContext="{x:Null}" 来解决此问题。但是,在大多数情况下,您使用的是 MVVM,并且已经设置了 DataContext,所以这没有实际意义。