有没有一种方法可以让我在不硬编码xaml的情况下在一行中显示多个项目?例如,我有一个有8个字段的类,在运行时,一个或多个字段不会为空。这意味着在开发人员的时候,我不知道哪些字段是空的,哪些不是空的。所以只会显示非空值,所有的空值都会被隐藏,而不是硬编码接口(xaml)我正在寻找一种通用的显示值的方法。我有一个有效的解决方案,但有很多硬编码..WinRT
例如,我的类可以是这样的
xaml的设计方式使我可以从代码中设置语言的可见性。如果用户选择显示英文和中文,则中文在语言类中的可见性设置为true,界面将根据用户的选择在每行显示一个中文和英文短语
发布于 2016-10-22 02:43:28
如果您像这样构建窗体:
<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。如下所示:
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转换器。这取决于你的数据,但这应该会让你开始让你的显示动态化。
https://stackoverflow.com/questions/40097105
复制相似问题