2017-01-20 10 views
0

これを動作させるには問題があります。ResourceDictionaryコントロールのXamarin.Formsバインディングの正しい方法

<ResourceDictionary> 
    <ViewCell x:Key="Separator"> 
     <Label Text="{Binding Title}" /> 
    </ViewCell> 
</ResourceDictionary> 

classオプションには、Titleという名前のプロパティが含まれています。このプロパティは、任意のテキストに設定されています。しかし、次のコードは動作しません。ラベルにはテキストは表示されません。テキストは "null"のままです。私は間違って何をしているのですか?バインディングを正しく設定するにはどうしたらいいですか?

if (Resources.ContainsKey("Separator")) 
{ 
    var cell = Resources["Separator"] as Cell; 

    if (cell != null) 
    { 
     cell.BindingContext = option; 

     section.Add(cell); 
    } 
} 
+0

達成しようとしていることを説明できますか? XAMLのリソースディクショナリにセルを置き、コードを使用してバインディングを使用することは珍しいことです。多分もっと多くの文脈が助けになるだろうか? – Krumelur

+0

確かに、私のアイデアは、いくつかの異なるViewCell(いくつかはテキスト、いくつかのチェックボックスなどを含んでいます)を与えられた "option.Type"に応じてTableViewに追加することができます")。私の考えはXAMLでそれらを定義することです(私のコントロールの大部分と同様です)。 – Florian

答えて

6

ResourceDictionaryのオブジェクトは一度だけ作成され、そのインスタンスは使用するたびに共有されます。 ViewCellBindingは再利用できませんので、これはうまくいかないでしょう。あなたResourceDictionaryを定義することができますどのような

ViewCellを含むDataTemplateで、DataTemplateコンテンツは、各用途のために再作成されるように、そのような場合には、それを共有することができます。

+0

私は上記のコメントに、さまざまなViewCellがあることを書きました。私はDataTemplatesを試してみましたが、TableView.ItemTemplateやそれに類するものを使わずにコードからこれらを作成しようとすると固執しました。私が同意する単一のテンプレートについては、達成するのは簡単ですが、複数の場合はどうですか? – Florian

+0

私は正しい方向に向いてくれてありがとう。私はDataTemplateSelectorで解決できました:https://developer.xamarin.com/guides/xamarin-forms/templates/data-templates/selector/ – Florian

関連する問題