xamarin.forms 从自定义渲染器访问视图模型 属性
xamarin.forms access viewmodel property from custom renderer
我有一个自定义 PageRenderer,其布局包括一个 ListView。
Droid 项目布局MatchPage.xml:
<android.support.design.widget.CoordinatorLayout
[...]
<ListView
android:id="@+id/scrollableview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
[...]
</android.support.design.widget.CoordinatorLayout
Droid 项目自定义渲染器:
[assembly: ExportRenderer(typeof(MatchPage), typeof(MatchPageRenderer))]
namespace beSupporter.Droid.Renderers
{
public class MatchPageRenderer : PageRenderer
{
Activity activity;
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || Element == null)
{
return;
}
activity = this.Context as Activity;
activity.SetContentView(Resource.Layout.MatchPage);
var listView = (Android.Widget.ListView) this.FindViewById(Resource.Id.scrollableview);
// HERE SET THE SOURCE
}
}
}
如果我的 xamarin.forms ViewModel 中有此 属性,如何设置 listView 的源?
public List<Fact> Facts
通常你不会从渲染器设置源,我不确定你为什么需要这个。渲染器主要用于显示东西,而不是设置,但如果你坚持...
在渲染器中,您可以访问作为匹配页面的元素。我假设您将 ViewModel 作为页面的成员,因此您可以访问模型中的列表。
我有一个自定义 PageRenderer,其布局包括一个 ListView。
Droid 项目布局MatchPage.xml:
<android.support.design.widget.CoordinatorLayout
[...]
<ListView
android:id="@+id/scrollableview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
[...]
</android.support.design.widget.CoordinatorLayout
Droid 项目自定义渲染器:
[assembly: ExportRenderer(typeof(MatchPage), typeof(MatchPageRenderer))]
namespace beSupporter.Droid.Renderers
{
public class MatchPageRenderer : PageRenderer
{
Activity activity;
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || Element == null)
{
return;
}
activity = this.Context as Activity;
activity.SetContentView(Resource.Layout.MatchPage);
var listView = (Android.Widget.ListView) this.FindViewById(Resource.Id.scrollableview);
// HERE SET THE SOURCE
}
}
}
如果我的 xamarin.forms ViewModel 中有此 属性,如何设置 listView 的源?
public List<Fact> Facts
通常你不会从渲染器设置源,我不确定你为什么需要这个。渲染器主要用于显示东西,而不是设置,但如果你坚持...
在渲染器中,您可以访问作为匹配页面的元素。我假设您将 ViewModel 作为页面的成员,因此您可以访问模型中的列表。