所有這些都是一個簡單的問題。我有使用使用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,我認爲它不是必須的......我真的從不需要它,因爲總是沒有它的解決方案。 :/ –