C# 为什么visual studio在更改;ItemsSource=";{Binding Path=Ssss1}";当我试图改变时“;sss1“;至;计划;
我正在尝试开发一个silverlight应用程序,当我尝试将“sss1”更改为“Programs”(我的意思是当我尝试这样做时)时,当我更改“ItemsSource=“{Binding Path=ssssss1}”时,该应用程序会崩溃 ItemsSource=“{Binding 路径=程序}” 然后 它使Visual Studio崩溃 在解释中(我想做的是): 我是使用c#和xaml的silverlight应用程序的初学者。我试图做的是显示如下信息:C# 为什么visual studio在更改;ItemsSource=";{Binding Path=Ssss1}";当我试图改变时“;sss1“;至;计划;,c#,silverlight,xaml,mvvm,binding,C#,Silverlight,Xaml,Mvvm,Binding,我正在尝试开发一个silverlight应用程序,当我尝试将“sss1”更改为“Programs”(我的意思是当我尝试这样做时)时,当我更改“ItemsSource=“{Binding Path=ssssss1}”时,该应用程序会崩溃 ItemsSource=“{Binding 路径=程序}” 然后 它使Visual Studio崩溃 在解释中(我想做的是): 我是使用c#和xaml的silverlight应用程序的初学者。我试图做的是显示如下信息: SerialNumber FirstNam
SerialNumber FirstName LastName //These are headingand below is the data
s0 ss1 ss1L
s1 ss2 ss2L
其中,s0 ss1 ss1L
和s1 ss2 ss2
L必须为列表
我的问题是:
它只显示标题,但不显示下面的数据,如下所示:但标题下不显示任何内容
我的代码如下:
我的项目名是DEV_CENTER和MainPage
<UserControl x:Class="DEV_CENTER.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:DEV_CENTER"
xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
<vm:ProgramViewModel x:Key="ProgramViewModel"/>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<data:DataGrid Grid.Row="0" x:Name="gridPrograms" AutoGenerateColumns="False" ItemsSource="{Binding Path=Programs }" IsReadOnly="True" DataContext="{StaticResource ProgramViewModel}" >
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="SerialNumber" Binding="{Binding Path=SerialNumber}" Width="2*"></data:DataGridTextColumn>
<data:DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}" Width="2*"></data:DataGridTextColumn>
<data:DataGridTextColumn Header="LastName" Binding="{Binding Path=LastName}" Width="3*"></data:DataGridTextColumn>
</data:DataGrid.Columns>
</data:DataGrid>
</Grid>
</UserControl>
这是我几乎全部的项目。你可以使用所有的代码进行测试。
Mvvm逻辑中是否有任何错误?或者其他错误?为什么会崩溃?堆栈溢出:
public ObservableCollection<Program> Programs
{
get
{
return Programs; // upper case p! recursively calling itself!
}
...
}
这只是触发一个属性更改,它从来没有设置值
完整属性应如下所示:
private ObservableCollection<Program> programs; // note lower case p!
public ObservableCollection<Program> Programs // upper case p!
{
get
{
return this.programs; // lower case p!
}
set
{
this.programs = value; // lower case p
OnPropertyChanged("Programs");
}
}
私有ObservableCollection程序;//注意小写的p!
公共可观测收集程序//大写p!
{
得到
{
返回this.programs;//小写字母p!
}
设置
{
this.programs=value;//小写字母p
OnPropertyChanged(“程序”);
}
}
您是说visual studio本身崩溃了?还是您的程序崩溃了?如果您的程序崩溃了,请使用调试器,调试器应该正好停止在问题所在的位置。@JohnGardner当我编辑ItemsSource=“{Binding Path=ssssss1}”到ItemsSource=“{Binding Path=Programs}”时。(我认为VS正在崩溃,因为它试图显示xaml设计器,而堆栈溢出发生在xaml设计器内部,导致VS崩溃)一般来说,在.net的大多数版本上,如果您的程序在没有任何信息的情况下崩溃,则可能是这样导致的堆栈溢出。我这样做了:私有ObservableCollection程序;//注意小写字母p!公共ObservableCollection程序//大写字母p!{get{return this.programs;//小写字母p!}设置{OnPropertyChanged(“Program”);}},但我再次更改“ItemsSource=“{Binding Path=Programs}”它再次崩溃。当我重新启动VS2012时,它甚至没有显示我在get set中所做的更改。我可以从上面粘贴的代码中告诉您,programs属性中存在堆栈溢出。但是如何解决它,我尝试在get set和程序中进行更改(小写)声明,当我再次在Xaml中进行更改时,它会再次出现相同的问题。如何解决?请帮助我..我迷路了..请确保关闭Xaml文件,以便Xaml设计器不再打开它(如果这是问题的原因)。更改文件保存。关闭文件。重新打开它。它是否包括您的更改?应该是的,您刚刚保存了它如果生成成功,则文件与以前不同。
public ObservableCollection<Program> Programs
{
get
{
return Programs; // upper case p! recursively calling itself!
}
...
}
private ObservableCollection<Program> programs; // note lower case p!
public ObservableCollection<Program> Programs // upper case p!
{
get
{
return this.programs; // lower case p!
}
...
}
set
{
OnPropertyChanged("Programs");
}
private ObservableCollection<Program> programs; // note lower case p!
public ObservableCollection<Program> Programs // upper case p!
{
get
{
return this.programs; // lower case p!
}
set
{
this.programs = value; // lower case p
OnPropertyChanged("Programs");
}
}