使用后面的代码将数据绑定到列表选择器

时间:2013-11-11 11:19:21

标签: c# xaml windows-phone-8

我有一个用户控件,因为我有一个列表选择器。 代码是:

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>

        <toolkit:ListPicker x:Name="lstPicker" Grid.Row="1" Margin="25,0,25,15" />
        <StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" >
            <Button Width="200" x:Name="btnReAssign" Content="reassign" Margin="5"/>
            <Button Width="200" x:Name="btnCancel" Content="cancel"  Margin="5"/>
        </StackPanel>        
</Grid>

现在我在运行时创建弹出用户控件。

MyTaskPopupWindow myTaskPopUpWindow = new MyTaskPopupWindow();

这包含列表选择器。 现在我将这个listpicker与我的数据对象绑定。

 myTaskPopUpWindow.lstPicker.ItemsSource = GetRegisterUserOC;

但是类名显示在列表选择器中,而不是属性中。我不知道如何将其中一个属性绑定到此列表选择器。我可以从代码后面绑定一个属性,因为我不想在用户控件中进行更改。

2 个答案:

答案 0 :(得分:1)

通常你会这样做:

<toolkit:ListPicker x:Name="lstPicker" Grid.Row="1" Margin="25,0,25,15" >
    <toolkit:ListPicker.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding YourDisplayPropertyOnObject}"/>
        </DataTemplate>
    </toolkit:ListPicker.ItemTemplate>
</toolkit:ListPicker>

如果您希望采用更加懒惰的方式,只需覆盖绑定对象上的ToString()属性即可显示出来。

答案 1 :(得分:0)

我从未使用过ListPicker,但你不能将DisplayMemberPath设置为你要显示的属性(例如姓名)吗?

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
        <TextBlock x:Name="tbkTitle" Margin="25,25,25,15" FontSize="32" />
        <toolkit:ListPicker x:Name="lstPicker" Grid.Row="1" Margin="25,0,25,15" DisplayMemberPath="Property" />
        <StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" >
            <Button Width="200" x:Name="btnReAssign" Content="reassign" Margin="5"/>
            <Button Width="200" x:Name="btnCancel" Content="cancel"  Margin="5"/>
        </StackPanel>        
</Grid>

或者

 myTaskPopUpWindow.lstPicker.DisplayMemberPath = PropertyName;