2016-10-17 83 views
0

有沒有一種方法可以讓我在一行中顯示多個項目而無需對xaml進行硬編碼,例如我有一個擁有8個字段的類,在運行時,一個或多個字段不會爲空。所以意思是我不知道在開發時間哪些字段是空的而不是空的。所以只有不會顯示空值,並且所有的空值將被隱藏而不是硬編碼界面(xaml)我正在尋找顯示值的通用方法..我有一個工作解決方案,但有很多硬編碼.. WinRT的通用顯示xaml

如我的課,可就是這樣

Class

和XAML的設計中,我設定從代碼語言的可見性這樣一種方式。如果用戶選擇顯示英文和中文,則語言類中的中文可見性設置爲true,則界面將在每行中顯示中文和英文短語,具體取決於用戶的選擇

+0

有很多方法可以解決這個問題。你需要縮小這個問題。模板化是處理「不對XAML進行硬編碼」的方式。如果值爲null,您可以創建一個具有帶隱藏項的觸發器樣式的模板。請嘗試_something_。那麼如果你遇到了麻煩,請發佈一個新問題,其中包含一個很好的[mcve],清楚地表明你所嘗試的是什麼,並且明確地解釋你具體遇到什麼問題。 –

+0

好吧,我明白你想表達什麼。別擔心,您不需要提供工作項目或Google搜索的歷史記錄就可以在StackOverflow上提出問題。請參閱下面的答案。 –

回答

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> 

你可以寫轉換器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(); 
    } 
} 

這將隱藏你的空字段,如果這真的是你想要的。沒有什麼可以阻止你創建一個等效的定製VisibleWhenTrue轉換器。這取決於你的數據,但這應該讓你開始使你的顯示動態。