C# 如何使用c从windows phone应用程序的列表框中获取所选项目的值#
我正在尝试从列表框中获取所选项目的值,并使用MessageBox.Show()显示该消息。 这是列表框的XAML代码C# 如何使用c从windows phone应用程序的列表框中获取所选项目的值#,c#,wpf,C#,Wpf,我正在尝试从列表框中获取所选项目的值,并使用MessageBox.Show()显示该消息。 这是列表框的XAML代码 <ListBox x:Name="lbTodoList" Grid.Row="1" Width="350" Margin="100,0,0,0"> <ListBox.Background> <LinearGradientBrush EndPoint="0.5,1" StartP
<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>
但问题不是显示所选项目,而是显示projectName.ClassName一个简单的修复方法是覆盖UserData的字符串,以提供您所期望的内容
public class UserData
{
...
public override string ToString()
{
return this.somevalue;
}
}
使用调试器并在运行时检查
。SelectedItem
——您会发现它有一个具有所需值的属性。您当前的代码将对象本身转换为字符串,而不是您期望的属性值。@TejasJain这只是一个简单的修复。更好的方法是研究绑定如何工作并利用它(首选MVVM体系结构)。这样,您就可以使用数据模板/转换器,并将关注点分开。另外,如果这已经解决了您的问题,请用接受的答案标记。@D Hansen谢谢您提供的信息,我将继续研究,您对MVVM的看法。@TejasJain一个很好的起点是:它很好地介绍了MVVM,并使用测试驱动的方法进行了全面的开发。
string text = lbTodoList.SelectedItem.ToString();
MessageBox.Show(text);
public class UserData
{
...
public override string ToString()
{
return this.somevalue;
}
}