2016-10-17 9 views
0

xamlをハードコーディングせずに複数の項目を1行に表示する方法がありますか?たとえば、8つのフィールドを持つクラスがあります。実行時に1つ以上のフィールドはnullになりません。つまり、開発時には、どのフィールドがヌルで、nullでないのかわかりません。だからnull値だけが表示され、すべてのnullsは非表示になりますインターフェイス(xaml)をハードコードする代わりに私は値を表示する一般的な方法を探しています..私は実用的な解決策がありますが、 .. WinRTの一般的な表示xaml

例えば私のクラスは、この

Class

とXAMLのようにすることができますが、私は、コードから言語の可視性を設定するように設計されています。ユーザーが英語と中国語を表示するように選択した場合、言語クラスの中国語の表示がtrueに設定され、ユーザーの選択に応じてインターフェイスに中国語と英語のフレーズが各行に表示されます。

+0

この問題に対処する方法はたくさんあります。 _あなたが問題を絞り込む必要があります_。テンプレートは「XAMLをハードコーディングしない」ことに対処する方法です。値がnullの場合、項目を非表示にするトリガーを持つスタイルを持つテンプレートを作成できます。 _something_を試してください。それから問題があれば、あなたが試したことを明確に示す良い[mcve]と、あなたが何を問題にしているのかを明確に正確に説明する新しい質問を投稿してください。 –

+0

さて、あなたが見たいものを理解しています。 StackOverflowの質問をするために、実際のプロジェクトやGoogleの検索履歴を提供する必要はありません。下の私の答えを見てください。 –

答えて

0

フォームこのように:

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

あなたは値がnullでないとき値がnullと表示されているとき、折りたたみ返すために、コンバータCollapsedWhenNullConverterを書くことができます。このように:

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

それはあなたが本当に必要な場合、それはあなたのためのnullフィールドを非表示にします。同等のカスタムVisibleWhenTrueコンバータも作成できません。それはあなたのデータに左右されますが、ディスプレイをダイナミックにし始める必要があります。

関連する問題