C# 一次添加多行
我只是从WPF和MVVM框架开始。我有一个带有telerikC# 一次添加多行,c#,wpf,mvvm,telerik,C#,Wpf,Mvvm,Telerik,我只是从WPF和MVVM框架开始。我有一个带有telerikRadGridView的窗口,我想同时添加来自多行的数据。有没有人有任何建议或例子,我尝试了很多方法,但似乎都没有成功 多谢各位 我的视图模型 private IList<Ligne> _CurrentLigne; public IList<Ligne> CurrentLigne { get { return _CurrentLigne; } set { _CurrentL
RadGridView
的窗口,我想同时添加来自多行的数据。有没有人有任何建议或例子,我尝试了很多方法,但似乎都没有成功
多谢各位
我的视图模型
private IList<Ligne> _CurrentLigne;
public IList<Ligne> CurrentLigne
{
get { return _CurrentLigne; }
set
{
_CurrentLigne= value;
OnPropertyChanged("CurrentLigne");
}
}
var _ligne = Currentligne as Ligne;
foreach (Ligne ligne in CurrentLigne)
{
if (Currentligne!= null)
_ligneBLL.InsetLigne(ligne);
}
private IList\u CurrentLigne;
公共图书馆
{
获取{return\u CurrentLigne;}
设置
{
_currentligine=值;
OnPropertyChanged(“CurrentLigne”);
}
}
var_ligne=当前ligne作为ligne;
foreach(当前Ligne中的Ligne-Ligne)
{
if(Currentligne!=null)
_ligneBLL.InsetLigne(ligne);
}
我的看法
<telerik:RadGridView x:Name="GridView"
AutoGenerateColumns="False"
ItemsSource="{Binding ListeLigne}"
SelectedItem="{Binding CurrentLigne, Mode=TwoWay}"
SelectionMode="Multiple" >
我建议您阅读MSDN上的页面,以便更好地了解数据绑定。现在,我可以给你一些建议。首先,在WPF中,您的属性应该真的使用了,如下所示:
private ObservableCollection<Ligne> _ListeLigne = new ObservableCollection<Ligne>();
public ObservableCollection<Ligne> ListeLigne
{
get { return _ListeLigne; }
set
{
_ListeLigne = value;
OnPropertyChanged("ListeLigne");
}
}
private Ligne _CurrentLigne = new Ligne();
public Ligne CurrentLigne
{
get { return _CurrentLigne; }
set
{
_CurrentLigne= value;
OnPropertyChanged("CurrentLigne");
}
}
有了这样的属性,您的XAML就可以了。最后,要添加项目,只需执行以下操作:
ListeLigne = new ObservableCollection<Ligne>(SomeMethodGettingYourData());
。。。如果您的数据访问方法返回一个可观察集合
。如果要在UI中选择特定元素,则必须从数据绑定集合中选择一个实际项目,但可以使用LinQ
轻松完成此操作
using System.Linq;
CurrentLigne = ListeLigne.First(l => l.SomeLigneProperty == someValue);
或者只是:
CurrentLigne = ListeLigne.ElementAt(someValidIndexInCollection);
哦。。。我还有一个建议给你。在代码中:
foreach (Ligne ligne in CurrentLigne)
{
if (Currentligne!= null) // this is a pointless if condition
_ligneBLL.InsetLigne(ligne);
}
上面的
if
条件是没有意义的,因为如果集合为null
,程序执行将永远不会进入foreach
循环。我认为您需要使用绑定列表。这是我经常使用的列表,但请记住,您需要发布您的notifyChange事件。试试这个
foreach (Ligne ligne in ListLigne)
{
var _ligne = ligne as Ligne;
_ligneBLL.InsetLigne(ligne);
}
通常我使用
.AddRange()
一次向列表中添加多个项目。我是否可以将列表绑定到SelectedItem@sheridan,因为我想同时添加多行所选项目只能是数据绑定集合中的实际项目。因此,如果数据绑定集合中的每个项目都是IList
,则您只能使用IList
作为所选项目。能否请您解释更多@sheridanPerhaps我应该辞职,免费成为您的私人导师?这个网站不是教用户新的语言,也不是提供教程。您需要阅读一些在线教程和MSDN的许多页面。请为您的答案添加解释,以便OP更好地理解问题
foreach (Ligne ligne in ListLigne)
{
var _ligne = ligne as Ligne;
_ligneBLL.InsetLigne(ligne);
}