所有,一个简单的问题。我有一个 MVVM 应用程序DataGrid
,我使用它绑定到 ViewModel
<DataGrid ItemsSource="{Binding Path=Resources}" ...></DataGrid>
其中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
在 中显示 [as a Checkbox
] DataGrid
?
2. 如何绑定到DataGrid
以自动在单独的列中显示项目?
你有什么尝试:
我试图从
ResourceViewmodel
类继承并绑定到它,但这很恶心,我想要另一个更优雅的解决方案;请 :]。我不知道如何继续这个。存储在 中的项目数
List
是可变的,并在运行时设置 - 所以这需要是List
.
与往常一样,非常感谢您抽出宝贵时间。