私はListView
というビューを持っています。今度はListView
(ViewCell
btwのカスタムレンダラー)のためにcustom rendererに切り替えました。シミュレータ(iOS、Android)でアプリを起動すると、次の例外が発生します。ListViewRendererでCachingStrategyを使用すると、プロパティーエラーが発生します
Xamarin.Forms.Xaml.XamlParseException:位置12:13私は削除する場合
CachingStrategy
すべてが正常に動作するようです値とプロパティ
間にプロパティが存在しない、または割り当て可能でない場合、または不一致の種類:プロパティ「CachingStrategy」を割り当てることができません。ここに私のコードは次のとおりです。ListView
が上に置かれている
ビュー、:
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyApp.Views.SomeView"
xmlns:customViews="clr-namespace:MyApp.Views;assembly=MyApp"
xmlns:renderer="clr-namespace:MyApp.CustomRenderers;assembly=MyApp"
VerticalOptions="FillAndExpand">
<renderer:CustomListView x:Name="SomeList"
SeparatorColor="{StaticResource PrimaryLight}"
HasUnevenRows="True"
CachingStrategy="RecycleElement"
IsGroupingEnabled="True"
GroupDisplayBinding="{Binding Key}"
IsPullToRefreshEnabled="True"
RefreshCommand="{Binding LoadDocumentsCommand}"
IsRefreshing="{Binding IsBusy, Mode=OneWay}">
<ListView.GroupHeaderTemplate>
<DataTemplate>
<customViews:GroupingHeader/>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<customViews:MyListItem Clicked="Item_Clicked"/>
</DataTemplate>
</ListView.ItemTemplate>
</renderer:CustomListView>
</StackLayout>
CustomListView
namespace MyApp.CustomRenderers
{
public class CustomListView : ListView
{
}
}
CustomListViewRenderer
[assembly: ExportRenderer(typeof(MyApp.CustomRenderers.CustomListView), typeof(MyApp.iOS.CustomRenderers.CustomListViewRenderer))]
namespace MyApp.iOS.CustomRenderers
{
public class CustomListViewRenderer : ListViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
{
base.OnElementChanged(e);
if (this.Control != null)
{
var listView = (UITableView)this.Control;
if (listView != null)
{
listView.SeparatorInset = UIEdgeInsets.Zero;
}
}
}
}
}
は、私は、プロパティを複製するべきか、私は必要なのですか別のコンストラクタ?
私はオプションを取った。 1、私は*ハック*を使用したくないからです。したがって、私はパラメータのないコンストラクタを追加しました。このコンストラクタは、既定値として 'RetainElement'を持つコンストラクタを呼び出します。誰かが 'x:Arguments'を使うのを忘れてしまっても、今は例外がありません。 – testing