質問を適切に書式設定してもわからない場合は、教えてください。しかし、私は単にビューセル内の値に背景色をバインドしようとしています。私は実際にこれが働いています。問題は、私が値を更新するとき、私は背景色の変化を見ることはありません。実装は少し複雑ですが、ここに私のコードです。OnBindingContextChangedを使用してListView(リサイクルキャッシュ戦略)でバリューコンバータを使用しようとしています
だから、基本的に私はちょうど私のレイアウトを構築ViewCell(OnBindingContextChanged)
...
ShowReadOverlay.SetBinding(Xamarin.Forms.VisualElement.BackgroundColorProperty, new Xamarin.Forms.Binding(".", Xamarin.Forms.BindingMode.TwoWay, new XamarinMobile.Converters.GridCellBackgroundColorConverter(), null, null, null));
...
。私はOnBindingContextChanged
メソッドでバインディングを設定する関連するコードを投稿することにしました。誰かが他のコードを必要としている場合、私はそれを追加してうれしいです、ちょうどそれが適切かどうかわからない。私のViewCellクラスは、ちょうどViewCell
を継承する単純なクラスです。
public class GridCellBackgroundColorConverter : Xamarin.Forms.IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
try
{
var cell = (XamarinMobile.ViewModels.GridCellViewModel)value;
if(cell.HasRead)
{
//return with shadow
return Xamarin.Forms.Color.FromRgba(0,0,0,0.6);
} else
{
//return no shadow
return Xamarin.Forms.Color.FromRgba(0, 0, 0, 0.0);
}
} catch(System.Exception ex)
{
return null;
}
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
#endregion
}
シンプル:
は、ここに私のコンバータです。できます。今ここには難しい部分があります。だから私が描いているグリッドは、ストーリーのセルを含むリストビューです。ユーザーは画像をクリックしてストーリーページに移動します。ユーザーがストーリーページにいるときは、グリッドに戻って別のストーリーに移動するか、左右にスワイプして別のストーリーに移動できます。ユーザーがグリッドからストーリーページに移動すると、セルは更新された状態になります。しかし、ユーザーがグリッドからではなく別のストーリーにスワイプすると、それが私の問題です。私のストーリーのページでは、グリッドセルを繰り返し処理するロジックがあり、現在開いているストーリー(スワイプしたストーリー)を見つけ、グリッド内にあるかどうかを確認し、グリッド内にある場合はセルのHasRead
プロパティを更新します。このように:
//find the cell in the grid (if exists)
ViewModels.GridCellViewModel cell = App.GridCells.Where(x => x.StoryId == App.Story.StoryId).FirstOrDefault();
if (cell != null)
{
cell.HasRead = true;
}
これは機能しますが、値変換器がプロパティを変更するようには誘発しません。私は間違って何をしていますか?プロパティを更新してバリュー・コンバータを起動させるにはどうしたらいいですか?
何?くそー..onbindingcontextの変更を介してビューセルをバインドする方法についての少しの洞察もありませんか? – jdmdevdotnet