我是这个数据绑定的新手。但我不知道我做错了什么。 我有一个带有数据网格的简单表单。我创建了一个类的observablecollection。这个班只是两个属性。我绑定到observablecollection并且datagrid显示了显示的数据。所以这是有效的,但如果我去更改通过双击单元格更改数据网格中的值。当我点击进入它崩溃。
这是代码
namespace TESTDELETE
public class Basemap
{
private string bmfilename;
private string bmdesc;
public Basemap(string filename, string desc)
{
this.bmfilename = filename;
this.bmdesc = desc;
}
public string BMFileName {
get {
return bmfilename;
}
set {
BMFileName = value;
}
}
public string BMDesc
{
get
{
return bmdesc;
}
set
{
BMDesc = value;
}
}
}
}
这是我的班级
<Window x:Class="TESTDELETE.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Initialized="Window_Initialized">
<Border BorderBrush="Black" BorderThickness="1">
<Grid>
<Button Content="Button" HorizontalAlignment="Left" Margin="339,175,0,0" VerticalAlignment="Top" Width="75"/>
<TabControl Margin="10">
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5">
<DataGrid x:Name="datagrid1" Margin="10" ItemsSource="{Binding}" AutoGenerateColumns="True">
</DataGrid>
</Grid>
</TabItem>
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5"/>
</TabItem>
</TabControl>
</Grid>
</Border>
这是我的XAML
NavbarService
在底图类中发生错误。当尝试更改datagrid中单元格的值时,错误发生在已更改的属性的set函数中。 例如,在表单加载后,我更改包含值desc3的单元格。错误将发生在Basemap类中BMDesc的set函数中。 该错误表示TESTDELETE.exe中出现未处理的“System.StackOverflowException”类型异常
任何帮助都会很棒。
JD
答案 0 :(得分:1)
BMFileName
和BMDesc
属性设置器不应设置自己的值,因为它会生成一个无限循环,导致应用程序崩溃。你应该为私人成员加价:
public class Basemap
{
private string bmfilename;
private string bmdesc;
public Basemap(string filename, string desc)
{
this.bmfilename = filename;
this.bmdesc = desc;
}
public string BMFileName
{
get
{
return bmfilename;
}
set
{
bmfilename = value;
}
}
public string BMDesc
{
get
{
return bmdesc;
}
set
{
bmdesc = value;
}
}
}