通用显示xaml

本文关键字:xaml 显示 | 更新日期: 2023-09-27 18:13:39

是否有一种方法可以使我在单行中显示多个项目而无需硬编码xaml例如我有一个有8个字段的类,在运行时,一个或多个字段不会为空。这意味着我不知道在开发时哪些字段是空的,哪些不是空的。因此,只有不空值将被显示,所有的空将被隐藏,而不是硬编码接口(xaml),我正在寻找一种显示值的通用方式。我有一个工作的解决方案,但有很多硬编码…WinRT

例如我的类可以是这样的

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

通用显示xaml

如果您像这样构建表单:

<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,当值为空时返回collapse,当值不为空时返回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转换器。这取决于你的数据,但这应该让你开始使你的显示动态