1

XAML

 <DataTemplate x:Name="PickTmplItemTipo">
            <StackPanel Orientation="Horizontal">               
                <TextBlock Text="{Binding tipo}" />                
            </StackPanel>
        </DataTemplate>

        <DataTemplate x:Name="PickTmplFullTipo">            
            <StackPanel Orientation="Horizontal" Margin="0,25,0,0">
                <TextBlock Name="lblTipo" Width="350" Text="{Binding tipo}" FontFamily="{StaticResource PhoneFontFamilyLight}" TextWrapping="Wrap" FontSize="{StaticResource PhoneFontSizeExtraLarge}" />
            </StackPanel>
        </DataTemplate>


<toolkit:ListPicker    
         Grid.Row="0"
         ItemsSource="{Binding}" Margin="21,0,22,0" 
         Header="{Binding Source={StaticResource LocalizedStrings}, Path=Localizedresources.strTipoUni}" 
         FullModeHeader="{Binding Source={StaticResource LocalizedStrings}, Path=Localizedresources.strTipoUni}" 
         FullModeItemTemplate="{Binding Source={StaticResource PickTmplFullTipo}}" 
         ItemTemplate="{Binding Source={StaticResource PickTmplItemTipo}}" 
         Name="lPickTipo" 
         TabIndex="0" 
         Height="98" 
         VerticalAlignment="Top" 
         ExpansionMode="FullScreenOnly" 
         Tap="lPickTipo_Tap" 
         SelectionChanged="lPickTipo_SelectionChanged" />

C#

リストピッカーを埋める:

    List<tipos> _lstTipos { get; set; }
    private void cargaLista()
    {
        using (serviciosDBDataContext miDataContext = new serviciosDBDataContext(conn))
        {
            _lstTipos = miDataContext.tipos.ToList();
        }

        this.lPickTipo.ItemsSource = _lstTipos;
    }

選択したアイテムを設定します。

これを試してみると、「SelectedItemは常に有効な値に設定されている必要があります。」というエラーが返されます。

this.lPickTipo.SelectedItem = myStringValue;

そして、次のことを試してみると、nullエラーが返されます。

this.lPickTipo.SelectedItem = lPickTipo.Items.First(x => (x as ListPickerItem).Content.ToString() == myStringValue);

しかし、どのインデックスが同等かわからないため、selectindexで設定することはできません

4

3 に答える 3

5
  • ティポへの参照がある場合(またはティポの等式演算子をオーバーライドする場合):

    this.lPickTipo.SelectedItem = yourTipo;
    

(例this.lPickTipo.SelectedItem = _lstTipos[2];:)

  • さもないと:

    this.lPickTipo.SelectedItem = this.lPickTipo.Items.OfType<tipos>().First(i => i.tipo == myStringValue); 
    
于 2012-05-08T15:38:31.220 に答える
1

リストはタイプのアイテムにバインドされてtiposいますが、選択したアイテムを文字列値に設定しようとしていますが、これは見つかりません。プロパティは、バインドされたアイテムのSelectedItem1つ、または誰も選択されていない場合は`nullを予期します。

リスト内の値の1つに設定してみてください_lstTipos。例:

this.lPickTipo.SelectedItem = _listTipos.First();

PS。このListPickerコントロールは試していませんが、これが通常WPFコントロールで機能する方法だと思います。

ところで、これはこれの複製のように見えます

于 2012-05-08T15:39:58.937 に答える
1

Linqリクエストを使用してインデックスを取得しようとするとどうなりますか?

リストに重複がないと仮定します

this.lPickTipo.SelectedItem = _lstTipos.IndexOf(_lstTipos.Single(s => s == myStringValue));
于 2012-05-08T15:41:11.293 に答える