首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通用显示xaml

通用显示xaml
EN

Stack Overflow用户
提问于 2016-10-18 07:15:33
回答 1查看 45关注 0票数 0

有没有一种方法可以让我在不硬编码xaml的情况下在一行中显示多个项目?例如,我有一个有8个字段的类,在运行时,一个或多个字段不会为空。这意味着在开发人员的时候,我不知道哪些字段是空的,哪些不是空的。所以只会显示非空值,所有的空值都会被隐藏,而不是硬编码接口(xaml)我正在寻找一种通用的显示值的方法。我有一个有效的解决方案,但有很多硬编码..WinRT

例如,我的类可以是这样的

Class

xaml的设计方式使我可以从代码中设置语言的可见性。如果用户选择显示英文和中文,则中文在语言类中的可见性设置为true,界面将根据用户的选择在每行显示一个中文和英文短语

EN

回答 1

Stack Overflow用户

发布于 2016-10-22 02:43:28

如果您像这样构建窗体:

代码语言:javascript
复制
<StackPanel>
    <StackPanel Orientation="Horizontal" Visibility="{Binding FirstName, Converter={StaticResource CollapsedWhenNullConverter}}">
        <TextBlock Text="First Name:" />
        <TextBlock Text="{Binding FirstName}" />
    </StackPanel>
    <StackPanel Orientation="Horizontal" Visibility="{Binding LastName, Converter={StaticResource CollapsedWhenNullConverter}}">
        <TextBlock Text="Last Name:" />
        <TextBlock Text="{Binding FirstName}" />
    </StackPanel>
</StackPanel>

您可以编写转换器CollapsedWhenNullConverter,使其在值为null时返回Collapsed,在值不为null时返回Visible。如下所示:

代码语言:javascript
复制
class CollapsedWhenNullConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return (value == null) ? Visibility.Collapsed : Visibility.Visible;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

这将为您隐藏空字段,如果这真的是您想要的。也没有什么可以阻止您创建一个等效的自定义VisibleWhenTrue转换器。这取决于你的数据,但这应该会让你开始让你的显示动态化。

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

https://stackoverflow.com/questions/40097105

复制
相关文章

相似问题

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