-1
StudentViewModel
개체 목록이 있습니다. 이 목록을 DataGridView로 바인딩하고 바인딩 된 모델의 속성에 따라 열 생성을 자동으로 설정합니다. StudentViewModel에서 C# LINQ 사용자 지정 특성이있는 경우 속성 선택
public async Task LoadGridView()
{
Tuple<List<StudentViewModel>, int> result = await App.StudentService.SearchAsync(studentRequestModel);
dataGridView1.DataSource = null;
dataGridView1.DataSource = result.Item1;
}
, 나는 정의와 속성 중 일부는
IsViewable
속성 장식했다.
[AttributeUsage(AttributeTargets.Property)]
public class IsViewable: Attribute
{
public bool Value { get; set; }
}
사용 :
[IsViewable(Value = true)]
public string Name { get; set; }
아이디어는 단지 UI 컨트롤에 바인딩하기 전에, 나는 목록을 필터링 내 그리드로 채워집니다 있도록 익명 개체의 새 목록을 만들고 싶어한다 선택한 속성 만.
참고 : 나는 그리드와 관련된 별도의 뷰 모델을 만들 싶지 않아요. 성능 문제가 발생하면 리팩터링합니다.
수있는 방법이 없습니다 동적으로 유전자 :
전체 프로젝트는 foyzulkarim/GenericComponents
발신자/사용 여기에서 찾을 수 있습니다 컴파일 타임에 속성을 알아야하기 때문에 익명 형식을 평가합니다. 사전을 사용하여 이름과 값을 매핑하거나 'ExpandoObject'를 채우고 '동적'을 사용하여 속성과 유사한 구문을 얻을 수 있습니다. 그 중 하나를 만들거나 새로운 'o'를 만들고 그 속성을 가진 속성을 동적으로 복사하십시오. –
이 답변은 도움이 될 수 있습니다 : https://stackoverflow.com/a/4938442/1220550 –
만약 내가 올바르게 이해한다면 당신은 이러한 속성들이'DataGridView'에 의해 나타나길 원하지 않을 것입니다. 이것이 원하는 경우, 커스텀'IsViewable' 대신에'[Browsable (false)]'속성을 사용하여 얻을 수 있습니까? –