0
私はコードで直接制御したい項目を持つListViewを作成しています。私はジェネリックListViewを宣言する次のxamlを持っています。Xamarinフォーム - ViewCellでデータバインドされたオブジェクトにアクセスする
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:ViewCellClick"
x:Class="ViewCellClick.MainPage">
<ListView x:Name="___listview" HasUnevenRows="True">
<ListView.ItemTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
次に、コードの後ろにItemsSourceプロパティを設定しました。
namespace ViewCellClick
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
___listview.ItemsSource = Repository.GetList();
___listview.ItemTemplate = new DataTemplate(typeof(CustomViewCell));
}
}
、これは、このレベルでは
public class CustomViewCell : ViewCell
{
public CustomViewCell()
{
var stack = new StackLayout();
stack.Children.Add(new Label() { Text = "Label" });
// HOW DO I ACCESS THE MODEL HERE SO I CAN DRAW CUSTOM UI DEPENDING ON THE MODEL INSTANCE?
View = stack;
}
}
}
...として定義されたカスタムテンプレートを活用し、それが唯一のラベルを作成して、私は非常に一般的なカスタムビューのセルを持っています。しかし、モデルが複雑で、モデルのデータに応じて、そのViewCellインスタンスに異なるUIを描画します。
各CustomViewCellのモデルへのアクセス権を取得し、そのモデルに従ってUIを描画するにはどうすればよいですか?
私はBindingContextを試しましたが、CustomViewCellコンストラクタではnullです。 thew ViewCellの
ありがとうございました。実際に試しましたが、コンストラクタでnullです(これを反映するように更新されました)。 BindingContextがnullではない別のイベントがありますが、コントロールを作成するのに適していますか? –
あなたが使用できるBindingContextChangedイベントがある – Jason
それはOnAppearingが良い方法だと思われます。私はそこにBindingContextへのアクセス権を持っています。 –