通用显示xaml

时间:2016-10-17 23:15:33

标签: c# xaml winrt-xaml

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

例如,我的班级可以是这样的

Class

xaml的设计方式是我从代码中设置语言的可见性。如果用户选择显示英文和中文,则中文在语言类中的可见性设置为true,界面将在每行显示中英文短语,具体取决于用户的选择

1 个答案:

答案 0 :(得分:0)

如果您构建这样的表单:

<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>

当值为null时,您可以编写转换器CollapsedWhenNullConverter以返回Collapsed,当值不为null时,可以写入Visible。像这样:

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转换器。它取决于你的数据,但这应该让你开始使你的显示动态。