2017-07-11 22 views
0

Xamarinでオブジェクトの値によって行の要素が異なるリストビューを作成しようとしています。 たとえば、ノートのモデル:XAMLでXamarinリストビューで異なる行の色を設定する方法

public class Note 
{ 
    public string Title { get; set; } 
    public string Content { get; set; } 
    public bool Active { get; set; } 
} 

<Label Text="{Binding Title}" TextColor="#f35e20" /> 
<Label Text="{Binding Content}" TextColor="#503026" /> 
<Button BackgroundColor="#000" /> 

そして、私はActiveフィールドに応じて、ボタンBackgroundColorを持つことを望みます。 Activefalseの場合、BackgroundColorは赤に設定されます。 trueの場合、BackgroundColorは緑に設定されます。

どうすればいいですか?ありがとうございました。

答えて

0

まず、あなたはブール値に色をバインドできるように値変換を行います。

using System; 
using Xamarin.Forms; 
using System.Globalization; 

namespace MyApp 
{ 
    public class BoolToColorConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      bool b = ((bool)value); 
      return b ? Color.Green : Color.Red; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 
} 

次に、あなたのXAMLファイルにコンバータをインポートします。

xmlns:local="clr-namespace:MyApp;assembly=MyApp" 

ページのリソースディクショナリに追加します:

<ContentPage.Resources> 
    <ResourceDictionary> 
    <local:BoolToColorConverter x:Key="boolToColorConverter"/> 
    </ResourceDictionary> 
</ContentPage.Resources> 

次に、バインディングで使用することができます。

<Label Text="{Binding Title}" TextColor="#f35e20" /> 
<Label Text="{Binding Content}" TextColor="#503026" /> 
<Button BackgroundColor="{Binding Active, Converter={StaticResource boolToColorConverter}}" /> 
+0

ありがとうございます。よく働く。 P.S. BackgroundColorのBindingプロパティの後の昏睡状態でなければなりません。 – Klick

関連する問題