我有一个用户控件,因为我有一个列表选择器。 代码是:
<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;
但是类名显示在列表选择器中,而不是属性中。我不知道如何将其中一个属性绑定到此列表选择器。我可以从代码后面绑定一个属性,因为我不想在用户控件中进行更改。
答案 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;