2016-08-09 1 views
2

Я работаю над приложением UWP, которое имеет данные, привязанные в ListView. Я пытаюсь найти способ свернуть (скрыть) элемент управления, когда нет данных. Например, я сделал простой вариант того, что я делаю:Как свернуть контроль привязки данных в UWP, когда в поле нет данных

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

Поскольку не у всех есть второе имя, я хочу поле отчества быть скрыто, когда она пуста.

example of what it looks like when run

Любые предложения о том, как я мог бы быть в состоянии скрыть поле отчество, когда человек не имеет второе имя?

+0

Вы должны использовать [конвертер] (https://msdn.microsoft.com/library/windows/apps/windows.ui. xaml.data.binding.converter). – tao

ответ

1

Используйте Value Converter

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

вы забыли добавить конвертер в страницы ресурсов: '' ' <локальный: TextToVisibilityConverter х: Name = "ConverterNameHere"/>' ' ' –

+0

Да, я буду обновлять это –

+0

Спасибо Нуваннц. Ваше решение сработало. Мне пришлось изменить формат привязки в среднем имени, чтобы заставить его работать. '' – ThePeter

Смежные вопросы