2016-12-10 18 views
1

リストビューのtextcellの色を条件によってどうやって変更できますか?それは背景色かテキスト色かどうかは関係ありません、条件に応じていくつかの行を強調表示したいだけです。下の私のコード例。どのようにしてTextCoroulやTextCellの背景色をListViewの状態で変更できますか?

<ListView x:Name="lstData" HasUnevenRows="false" Footer="Footer" ItemSelected="OnSelection" > 
    <ListView.ItemTemplate> 
     <DataTemplate> 
     <TextCell Text="{Binding OrderId}" Detail="{Binding OrderState}" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    <ListView.FooterTemplate> 
     <DataTemplate> 
     <StackLayout Orientation="Horizontal" Padding="5,5,5,5"> 
      <Button Text="New Order" Clicked="OnNewOrderClicked" /> 
     </StackLayout> 
     </DataTemplate> 
    </ListView.FooterTemplate> 
    </ListView> 

    public ManageOrder() 
    { 
     InitializeComponent(); 
     var vList = App.orderDatabase.GetAllOrders(); 
     lstData.ItemsSource = vList; 

     for(int i=0; i < vList.Count(); i++) 
     { 
      if(vList[i].IsDispatched == false) 
      { 
     // **Change colour of text view** 
      } 

     }   
    } 
+0

あなたはおそらく同様にデータバインディングによってそれをやりたいです。 'ValueConverters'かテンプレートセレクタを見てください –

+0

ありがとう! Template Selectorは多くの助けになりましたが、以前はValueConverterを試しましたが、うまくいきませんでした。 – George

答えて

0
<ListView x:Name="lstData" HasUnevenRows="false" Footer="Footer" ItemSelected="OnSelection" > 
    <ListView.ItemTemplate> 
     <DataTemplate> 
     <TextCell Text="{Binding OrderId}" Detail="{Binding OrderState}" TextColor= "{Binding StateColor}" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    <ListView.FooterTemplate> 
     <DataTemplate> 
     <StackLayout Orientation="Horizontal" Padding="5,5,5,5"> 
      <Button Text="New Order" Clicked="OnNewOrderClicked" /> 
     </StackLayout> 
     </DataTemplate> 
    </ListView.FooterTemplate> 
    </ListView> 

そして、(あなたのVLISTたです)注文に私はあなたがコントロールすることができますタイプカラー(xamarin.formsライブラリ内にあるもの)であるものと性質を持っているでしょう。

+0

Thanks、しかし私はすでにTemplate Selectorを使用していました。 – George

0
You can achieve your requirement by using IValueConverter. 

    <ContentPage.Resources> 
     <ResourceDictionary> 
      <local:Class1 x:Key="class1" /> 
     </ResourceDictionary> 
    </ContentPage.Resources> 

<ListView x:Name="lstData"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextCell Text="{Binding OrderId}" TextColor="{Binding Colors, Converter={StaticResource class1}}" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

//Converter class 

    public class Class1 : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      if ((int)value > 1000) 
       return Color.Green; 
      else 
       return Color.Red; 

     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      return value; 
     } 
    } 
関連する問題