当字段中没有数据时如何折叠 UWP 中的数据绑定控件
How to collapse a data bound control in UWP when there is no data in the field
我正在开发一个 UWP 应用程序,它在 ListView 中绑定了数据。我一直在试图找到一种在没有数据时折叠(隐藏)控件的方法。例如,我做了一个我正在做的简单版本:
<ListView Name="lvwMaster" ItemsSource="{x:Bind CollectionOfPeople}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:Person">
<StackPanel Name="pnlOnePerson" Margin="10">
<TextBlock Name="lblFirstName" Text="{x:Bind FirstName}" />
<TextBlock Name="lblMiddleName" Text="{x:Bind MiddleName}" Height="Auto" />
<TextBlock Name="lblLastName" Text="{x:Bind LastName}" />
<TextBlock Name="lblBirthDate" Text="{x:Bind BirthDate}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
由于不是每个人都有中间名,所以我希望中间名字段在为空时隐藏。
关于当此人没有中间名时我如何能够隐藏中间名字段的任何建议?
使用值转换器
class TextToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
string name = System.Convert.ToString(value);
if (string.IsNullOrEmpty(name))
{
return Visibility.Collapsed;
}
return Visibility.Visible; }
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
将转换器定义为页面内的静态资源。
<Page.Resources>
<local:TextToVisibilityConverter x:Name="ConverterNameHere"/>
</Page.Resources>
在你的数据模板中使用它,
<DataTemplate x:DataType="data:Person">
<StackPanel Name="pnlOnePerson" Margin="10">
<TextBlock Name="lblFirstName" Text="{x:Bind FirstName}" />
<TextBlock Name="lblMiddleName" Text="{x:Bind MiddleName}" Height="Auto" Visibility ="{Binding path=Text, ElementName="lblMiddleName" Converter={StaticResource ConverterNameHere}}" />
<TextBlock Name="lblLastName" Text="{x:Bind LastName}" />
<TextBlock Name="lblBirthDate" Text="{x:Bind BirthDate}" />
</StackPanel>
</DataTemplate>
我正在开发一个 UWP 应用程序,它在 ListView 中绑定了数据。我一直在试图找到一种在没有数据时折叠(隐藏)控件的方法。例如,我做了一个我正在做的简单版本:
<ListView Name="lvwMaster" ItemsSource="{x:Bind CollectionOfPeople}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:Person">
<StackPanel Name="pnlOnePerson" Margin="10">
<TextBlock Name="lblFirstName" Text="{x:Bind FirstName}" />
<TextBlock Name="lblMiddleName" Text="{x:Bind MiddleName}" Height="Auto" />
<TextBlock Name="lblLastName" Text="{x:Bind LastName}" />
<TextBlock Name="lblBirthDate" Text="{x:Bind BirthDate}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
由于不是每个人都有中间名,所以我希望中间名字段在为空时隐藏。
关于当此人没有中间名时我如何能够隐藏中间名字段的任何建议?
使用值转换器
class TextToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
string name = System.Convert.ToString(value);
if (string.IsNullOrEmpty(name))
{
return Visibility.Collapsed;
}
return Visibility.Visible; }
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
将转换器定义为页面内的静态资源。
<Page.Resources>
<local:TextToVisibilityConverter x:Name="ConverterNameHere"/>
</Page.Resources>
在你的数据模板中使用它,
<DataTemplate x:DataType="data:Person">
<StackPanel Name="pnlOnePerson" Margin="10">
<TextBlock Name="lblFirstName" Text="{x:Bind FirstName}" />
<TextBlock Name="lblMiddleName" Text="{x:Bind MiddleName}" Height="Auto" Visibility ="{Binding path=Text, ElementName="lblMiddleName" Converter={StaticResource ConverterNameHere}}" />
<TextBlock Name="lblLastName" Text="{x:Bind LastName}" />
<TextBlock Name="lblBirthDate" Text="{x:Bind BirthDate}" />
</StackPanel>
</DataTemplate>