2010-12-11 18 views
3

Windows Phone 7用のSilverlightツールキットのlistpickerコントロールの値/ selecteditemを設定しようとしています(xmlのエントリを編集したい場合はIOからデータを取り出します)テキストボックス/リストピッカーに設定します)。選択した項目を設定する方法

私は現在、使用しようとしています:(サブ文字列です)

ListPickerSub.SelectedItem = sub; 

をしかし、それはあなたがデータを設定したいのSystem.InvalidOperationException

きっと
Additional information: SelectedItem must always be set to a valid value. 
+1

「サブ」とは何ですか?それは実際にリストに属していますか? –

+0

xElement( "subElement")を使用していたとします。データバインディングを設定する値。 subは、subElementの値と同じ値です。私も、静的listpickerの内容を設定することにより、(単なるテストに)試してみました: 月曜日は 日曜日 Jamie

答えて

3

SelectedItemはListPickerItem(リスト内の項目の1つ)を想定しています。あなたはそれを文字列に渡しているので、エラーです。

SelectedIndexを設定する方が簡単です。

あなたがリストに入力する内容を知らずにSelectedItemを設定する関連する例を与えるのは難しいです。

編集:
は、ここでは、文字列に結合することができる方法の例です。あなたが実際にitemsourceにバインドしているものの実行可能な例がなければ、これは私ができる最高のものです。 (。ただ、オブジェクトまたは部分的なコードの名前を与えることは十分ではありません)

と仮定:

<Controls:ListPicker x:Name="ListPickerSub"> 
    <Controls:ListPicker.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding}" /> 
     </DataTemplate> 
    </Controls:ListPicker.ItemTemplate> 
    <Controls:ListPicker.FullModeItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding}" /> 
     </DataTemplate> 
    </Controls:ListPicker.FullModeItemTemplate> 
</Controls:ListPicker> 

を次に私は内容をバインドすることができます。

ListPickerSub.ItemsSource = SubItems(); 


private IEnumerable<string> SubItems() 
{ 
    yield return "monday"; 
    yield return "tuesday"; 
    yield return "wednesday"; 
    yield return "thursday"; 
    yield return "friday"; 
    yield return "saturday"; 
    yield return "sunday"; 
} 

としてSelectedItemを設定:

ListPickerSub.SelectedItem = "sunday"; 
+0

私はこのようなリスト移入しています: '<ツールキット:ListPicker.ItemTemplate> を< TextBlock Name = "{バインディングサブネーム}" Text = "{バインディングサブネーム}"マージン= "0" /> ' – Jamie

+0

@Jamieしかし、あなたはItemSourceとして渡しています? –

+0

サブネイルをバインドします。 私は試してみました:オブジェクトインデックス= SubTxt。FindName(サブ);選択したアイテムをインデックスとして設定しますが、インデックスは常にnullとして返されます – Jamie

0

を投げています基になるデータソースで、リストをリフレッシュするだけですか?

2

次のようなもの:

ListPickerSub.SelectedItem = ListPickerSub.Items.First(x => (x as ListPickerItem).Content.ToString() == sub); 

ContentをTextBlockにキャストし、それに応じてコードを変更する必要があります。 ListPickerがListPickerItemを使用して動的に生成される私の場合、上記の動作

関連する問題