2015年12月23日水曜日

1行に複数の項目を配置するListBoxのSample(その3)

コンバーターを使用してデータの表示を変える

ID の表示を ID[9999] のように表示する。
ListItem.cs 内にコンバータクラスを作成する。
class IDFormatter : Windows.UI.Xaml.Data.IValueConverter
{
 public object Convert(object value, Type targetType, object parameter, string language)
 {
  if (value is uint) {
   return "ID[" + ((uint)value).ToString("D4") + "]";
  }
  return "";
 }
 public object ConvertBack(object value, Type targetType, object parameter, string language)
 {
  throw new NotImplementedException();
 }
}


MainPage.xaml に作成したコンバータを使用するように記述する。
<Page
                      :
 xmlns:data="using:ListBoxSample.Model"
 xmlns:formatter="using:ListBoxSample.Model"
 mc:Ignorable="d">



<TextBlock Text="{x:Bind ID, Converter={StaticResource IDFormatterKey}
        ConverterParameter=Param}" 
 Style="{ThemeResource BaseTextBlockStyle}" />
のようにパラメータを指定すると
public object Convert(object value, Type targetType, object parameter, string language)
の parameter に記述した文字列(例では"Param")が渡される。
ただし、現状では文字列でしか渡せないので、使い道が限定される。
ここもBindできれば、できることが増えそうだが....
この Converter で動的なパラメータ(フラグ等)で変換方法を変えるには、Globalなフラグでしか出来ない。


0 件のコメント:

コメントを投稿