2016-08-09 3 views
2

ListViewにバインドされたデータを持つUWPアプリケーションで作業しています。私はデータがないときにコントロールを崩壊させる(隠す)方法を見つけようとしています。誰もがミドルネームを持っているフィールドにデータがないときに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

値コンバータを使用し

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(); 
    } 
} 

ページ内の静的リソースとしてConverterを定義します。データ・テンプレートで

<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 X:名= "ConverterNameHere"/>' ' ' –

+0

うん、私は更新されますそれは –

+0

ありがとうNuwannnz。ソリューションが機能しました。私はそれを動作させるために中間の名前のバインディングのフォーマットを変更する必要がありました。 ' – ThePeter

関連する問題