首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当一个元素在电话里时,如何隐藏它?

当一个元素在电话里时,如何隐藏它?
EN

Stack Overflow用户
提问于 2014-05-06 19:26:48
回答 1查看 641关注 0票数 3

其想法是,您将在Visual 2013更新2中为Windows8.1更新和Windows 8.1创建WinRT-XAML通用应用程序。您在手机和平板电脑平台之间共享相同的XAML视图。您正在使用聚合的CommandBar控件向用户显示按钮。在您的Windows应用程序中,您有5个主按钮,但Windows Phone UI只支持4个。当您在Windows Phone中运行应用程序时,您会发现第5个按钮被删除,但它删除了end按钮,中间按钮是您想要删除的按钮。你不想重新排序你的按钮。您有什么选择可以使一个UIElement隐藏在电话中,但可以在平板电脑上看到?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-06 19:26:48

你可以用很多方法来处理这件事。如果您想要一种可靠和可重用的方法,可以在要隐藏的按钮的可见性上使用转换器。XAML应该是这样的:

代码语言:javascript
复制
<Page.Resources>
    <Converters:HiddenWhenPhoneConverter x:Name="HidePhone" />
</Page.Resources>
<Button Visibility="{Binding, Converter={StaticResource PhoneHide}}" />

然后你会有一个转换器,类似于这样:

代码语言:javascript
复制
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,因此这是没有意义的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23503277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档