其想法是,您将在Visual 2013更新2中为Windows8.1更新和Windows 8.1创建WinRT-XAML通用应用程序。您在手机和平板电脑平台之间共享相同的XAML视图。您正在使用聚合的CommandBar控件向用户显示按钮。在您的Windows应用程序中,您有5个主按钮,但Windows Phone UI只支持4个。当您在Windows Phone中运行应用程序时,您会发现第5个按钮被删除,但它删除了end按钮,中间按钮是您想要删除的按钮。你不想重新排序你的按钮。您有什么选择可以使一个UIElement隐藏在电话中,但可以在平板电脑上看到?
发布于 2014-05-06 19:26:48
你可以用很多方法来处理这件事。如果您想要一种可靠和可重用的方法,可以在要隐藏的按钮的可见性上使用转换器。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或Button的父DataContext,则转换器将不会触发。您可以通过在Button或其父节点上设置DataContext="{x:Null}"来解决这个问题。但是,在大多数情况下,您使用的是MVVM,并且已经设置了DataContext,因此这是没有意义的。
https://stackoverflow.com/questions/23503277
复制相似问题