所有这些都是一个简单的问题。我有使用使用MVVM限制WPF中绑定到DataGrid的属性
<DataGrid ItemsSource="{Binding Path=Resources}" ...></DataGrid>
与我已绑定到一个ViewModel一个DataGrid
一个MVVM应用,其中Resources
经由
public ObservableCollection<ResourceViewModel> Resources { get; private set; }
但是限定在ResourceViewModel
类,我不仅有我想性质出现在DataGrid
,但其他属性我不想要出现在DataGrid
。该ResourceViewmodel
类是
public class ResourceViewModel : WorkspaceViewModel, IDataErrorInfo
{
readonly Resource resource;
readonly ResourceDataRepository resourceRepository;
private bool isSelected;
public ResourceViewModel(Resource resource, ResourceDataRepository resourceRepository)
{
if (resource == null)
throw new ArgumentNullException("resource");
if (resourceRepository == null)
throw new ArgumentNullException("resourceRepository");
this.resource = resource;
this.resourceRepository = resourceRepository;
}
public string KeyIndex
{
get { return this.resource.KeyIndex; }
set
{
if (value == this.resource.KeyIndex)
return;
this.resource.KeyIndex = value;
base.OnPropertyChanged("KeyIndex");
}
}
public string FileName
{
get { return this.resource.FileName; }
set
{
if (value == this.resource.FileName)
return;
this.resource.FileName = value;
base.OnPropertyChanged("FileName");
}
}
public List<string> ResourceStringList
{
get { return this.resource.ResourceStringList; }
set
{
if (Utilities.Utilities.ScrambledEquals<string>(this.resource.ResourceStringList, value))
return;
this.resource.ResourceStringList = value;
base.OnPropertyChanged("ResourceStringList");
}
}
public bool IsSelected
{
get { return isSelected; }
set
{
if (value == isSelected)
return;
isSelected = value;
base.OnPropertyChanged("IsSelected");
}
}
}
在哪里我不想IsSelected
出现在DataGrid
,我想在ResourceStringList
每个项目出现在Datagrid
的不同列。我的问题是:
1.如何防止IsSelected
在DataGrid
中显示为[Checkbox
]?
2.如何获取与DataGrid
的绑定,以自动在单独列中显示项目?
你尝试过什么:
我试图从
ResourceViewmodel
类继承并绑定到这个代替,但是这是令人厌恶的,我想另一个更优雅的解决方案;请 :]。我不知道如何继续这一个。存储在
List
中的项目数量是可变的,并且在运行时设置 - 因此这需要是List
。
一如既往,非常感谢您的时间。
您可以手动创建自己的列的属性。有关更多信息,请参阅[DataGrid.AutoGenerateColumns](http://msdn.microsoft.com/zh-cn/library/system.windows.controls.datagrid.autogeneratecolumns.aspx)。 – Silvermind
如果ResourceStringList中的项目数量对于每一行不同,您想要生成多少列,并且它们的头应该是什么? – LPL
当人们在MVVM模式中使用ObservableCollection时,我总是感到困惑。如果你使用MVVM,我认为它不是必须的......我真的从不需要它,因为总是没有它的解决方案。 :/ –