gpt4 book ai didi

c# - 使用 ObservableCollection 和绑定(bind) WPF

转载 作者:行者123 更新时间:2023-11-30 15:06:32 25 4
gpt4 key购买 nike

我知道这个问题听起来可能与我的上一个问题相似,但这是一种不同的方法,采用了其他人的建议。走不同的路线我试图将 ListView 中的内容绑定(bind)到几个文本框。我对 WPF 非常陌生,不确定我是否做对了。我想这是一种 MVVP 方法。现在这个程序做的不多。 ListView 中只有一项,但它是空的(没有姓名、年龄、年级)。当我尝试在 ListView 中选择它时,我可以看到它突出显示的项目 b/c。任何帮助是极大的赞赏。

有一个类可以生成字符串名称、int age、int grade 并具有 getter 和 setter 方法。类(class)名称叫 Camper(age, grade, name)

类 BindingCamper:制作 observablecollection

     public class Camper
{
public Camper[] requests;
public int[] relationValues;
public String name;
private String school;
public int age;
public int grade;
private Boolean isGrouped = false;
private string group;


public Camper(int a, int g, String n)
{
requests = new Camper[4];
relationValues = new int[4];
name = n;
this.age = a;
this.grade = g;
}

public Camper(String n)
{
this.requests = new Camper[4];
this.relationValues = new int[4];
this.name = n;
}

public Camper()
{

}

// Getter Methods
public string getName()
{
return name.ToString();
}
public string getSchool()
{
return this.school;
}
public int getAge()
{
return this.age;
}
public int getGrade()
{
return this.grade;
}
public int getRelationValue(int i)
{
if (i < relationValues.Length)
{
return relationValues[i];
}
else
{
return 0;
}

}

class BindingCamper
{
public ObservableCollection<Camper> Campers { get; private set; }

public BindingCamper()
{
Campers = new ObservableCollection<Camper>();

}

另一个类(页面):

public partial class CampersPage : Page
{
MainWindow _parentForm;

public ObservableCollection<Camper> Campers { get; private set; }

public CampersPage(MainWindow parent)
{
_parentForm = parent;
InitializeComponent();

// Campers = new ObservableCollection<Camper>();
var bindMe = new BindingCamper();
Camper CampMe = new Camper(3, 4, "Tony Lagarrigue");
// CampMe.getName();
bindMe.Campers.Add(CampMe);
DataContext = bindMe;

用于绑定(bind)所有内容的 XAML。 :

      <ListView HorizontalAlignment="Left" Margin="10,10,0,40" x:Name ="listViewCampers" Width="200" SelectionChanged="listViewCampers_SelectionChanged" ItemsSource="{Binding Campers}" DisplayMemberPath="name" IsSynchronizedWithCurrentItem="{x:Null}">

<ListView.View>
<GridView>



<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="100" />
<GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" Width="40" />
<GridViewColumn Header="Grade" DisplayMemberBinding="{Binding Grade}" Width="40" />

</GridView>
</ListView.View>
</ListView>
<Grid Height="Auto" HorizontalAlignment="Stretch" Margin="209,12,0,0" Name="infoGrid" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="134*" />
<RowDefinition Height="154*" />
</Grid.RowDefinitions>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="23,24,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Text="{Binding name, ElementName=listViewCampers}" Height="23" HorizontalAlignment="Left" Margin="23,46,0,0" Name="txtName" VerticalAlignment="Top" Width="120" AcceptsReturn="True" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="23,103,0,0" Name="txtAge" VerticalAlignment="Top" Width="120" />

最佳答案

您需要在 View 模型中创建要绑定(bind)的公共(public)属性。

永远不要在 .Net 中创建 getSomething() 方法。

关于c# - 使用 ObservableCollection 和绑定(bind) WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7707521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com