2016-07-19 24 views
-4

我试图从列表框中获取所选项目的值并使用MessageBox.Show()显示该消息。 这是列表框我如何从列表框中使用c的windows phone应用程序中获取所选项目的值#

<ListBox x:Name="lbTodoList" Grid.Row="1" Width="350" Margin="100,0,0,0"> 
       <ListBox.Background> 
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="#FF060000" Offset="0"/> 

        </LinearGradientBrush> 
       </ListBox.Background> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock x:Name="Listbox" Grid.Row="1" Text="{Binding salutationName}" /> 
         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

和C#代码我的XAML代码是数据绑定

List<UserData> info = JsonConvert.DeserializeObject<List<UserData>>(e.Result); 
List<UserData> items = new List<UserData>(); 
lbTodoList.Items.Clear(); 
foreach (UserData item in info) 
{ 
    items.Add(new UserData() { salutationName = item.salutationName }); 
} 
this.lbTodoList.ItemsSource = items; 

这是用于显示所选择的项目

string text = lbTodoList.SelectedItem.ToString(); 

     MessageBox.Show(text); 

但问题是代替显示所选项目,它显示projectName.ClassName

+0

使用调试和运行时检查'.SelectedItem' - 你会发现,它具有与所需值的属性。您当前的代码将对象本身转换为字符串,而不是您期望的属性值。 – Filburt

回答

0

一个简单解决方法是重写UserData的ToString以提供您期望的内容。

public class UserData 
{ 
    ... 

    public override string ToString() 
    { 
     return this.somevalue; 
    } 
} 
+0

是的,它是我的作品,谢谢 –

+0

@TejasJain这只是一个简单的修复。一个更好的方法是研究绑定是如何工作和利用的(MVVM架构是首选)。这样您就可以使用DataTemplates/Converters来分离问题。此外,如果这已解决您的问题,请标记为已接受的答案。 –

+0

@D Hansen感谢您提供的信息,我会继续努力,您对MVVM有何评论。 –

相关问题