码迷,mamicode.com
首页 > 其他好文 > 详细

理解SelectedValue, SelectedValuePath, SelectedItem & DisplayMemberPath + Demo

时间:2020-08-04 09:49:55      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:没有   triangle   空格   解释   listbox   hat   额外   down   路径   

该项目是使用VS2012构建的,目标是。net 4.目录 又快又脏,→截屏。额外阅读,→口头解释。演示代码->通过只走; Introduction , 我看到过这个问题突然出现,所以我想给那些想要解决这个问题的人提供一个参考。又快又脏->他们说一张图片抵得上1000个单词,所以这里有一张图片:我说一个演示值1000张图片,所以请随意下载代码并自己玩它。额外阅读——口头解释。这不是一个新的话题,你可以很容易地看到如果你看这里,,这里,这里或官方的msdn页面只(做注意,官方的msdn(写这篇文章的时候),0 4认为它有用的),只设置SelectedItem:这将返回thelist /下拉列表框中当前选中的项的容器。正如您所看到的,这是一个对象(因为我的列表包含对象)。如果你的List/Combobox/etc包含一个字符串列表,它将是一个字符串。如果它包含int,它将是一个int. SelectedValuePath:设置这将使属性SelectedValue 返回你在这里选择的属性的值。在我们的示例中,选择“ShapeColor”将使SelectedValue只返回颜色,而不是整个shape对象。注意:在这里您将属性名设置为字符串。看看下面的例子演示code 代码只SelectedValue:如果你只想要一个对象的一部分,设置上述属性,这里你会得到这个属性的值只注意,如果没有使用SelectedValuePath,这是一样的使用设置SelectedItem只DisplayMemberPath:将其设置为对象的属性,将导致GUI在选择类时显示该属性,而不是看到类名或类ToString()方法(应该始终提供)。请看这本书ToC 中的第5项。使用代码 我想让它尽可能的简单和简短,同时提供足够的冲击力,让它变得有趣。我使用了一个简单的Xaml文件,后面有一些代码,它总共有大约200行代码(包括空格和一些注释)。 持有DockPanel页脚底部和StackPanel将填补窗口(默认情况下这个孩子)只因为我没有使用MVVM在这个例子中,我结合起来给窗口一个名字,然后参照这个名字绑定ElementName只将指向匹配的路径属性文件背后的代码只隐藏,Code

Window x:Class="SelectedValue_and_SelectedItem.MainWindow"
	... Name="SelectionFun" >

Hide副本,这涵盖了第一部分,创建对象并将其绑定到列表中,这样您就可以选择一个形状。第二个区域有两个组合框,你可以在那里选择你想要绑定/看到的属性,还有一些标签,显示你实际选择了什么。我还将网格的一部分与形状的颜色绑定,以获得一些额外的视觉反馈。组合框看起来是这样的:标签是直接颠倒的,所以让我们继续。MainWindow.xaml.cs -后面的代码,我为我的对象使用的结构是一个虚拟的我的形状,看起来像这样:复制名为GetShapesList()的Code

public class MyShape
{
    public string ShapeType  { get; set; }
    public string ShapeColor { get; set; }
    public int    ShapeSides { get; set; }
}  

A方法将用如下对象填充形状列表:复制Code

return new ObservableCollection<MyShape> {	
    new MyShape{ShapeType = "Circle",    ShapeColor = "Blue",	ShapeSides = 0 },
    new MyShape{ShapeType = "Triangle",  ShapeColor = "Yellow",	ShapeSides = 3 },  ... } 

(边是实际形状的边,颜色只是我添加的随机颜色)当我们到达PropertiesList时,事情变得很有趣,它是这样填充的:PropertyObject是一个简单的类,用于保存我们正在处理的属性的名称和类型(都是字符串)。首先我们将添加一个空的,所以当被选中时,它将“重置”绑定到默认。然后我们将使用反射来找到MyShape类上的所有属性,这样我们就可以从组合框中选择它们。您可以随意添加更多属性,或者将此方法泛化为将类作为参数,然后只需传递您自己的自定义类就可以看到它的作用。SelectionChanged事件只是根据被选择的内容设置列表框的源属性(我们在xaml中称之为SourceListBox)。例如:隐藏,复制Code

private void DisplayMemberPathCmbx_SelectionChanged(object sender, SelectionChangedEventArgs e) {
  // Get the value
  ComboBox cmbx = (ComboBox)sender;
  PropertyObject prop_ob = ((PropertyObject)cmbx.SelectedItem);
  string name = prop_ob.PropertyName;

  // Actual setting happens here
  SourceListBox.DisplayMemberPath = name;
} 

That的它。下载代码并让它运行起来:)感兴趣的地方 我通常倾向于MVVM这些天,但我想保持简短的代码,所以我选择了方法背后的代码只注意使用反射动态属性及其类型,和我们将xaml绑定到属性使用names.History  21.10.2013:最初版本只随意留言,反馈和/或问任何问题。 本文转载于:http://www.diyabc.com/frontweb/news160.html

理解SelectedValue, SelectedValuePath, SelectedItem & DisplayMemberPath + Demo

标签:没有   triangle   空格   解释   listbox   hat   额外   down   路径   

原文地址:https://www.cnblogs.com/Dincat/p/13430869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!