2009-11-18 6 views
2

이전 게시물 (here)의 후속 질문입니다.Xaml의 동적 열 바인딩

'헤더'정보가 다음과 같이 저장되어 있습니다. Dictionary<string,string> - 첫 번째 문자열은 필드 이름을 나타내고 두 번째 머리글은 표시된 문자를 나타냅니다.

나는 동적 데이터 집합이 다음과 같이 저장됩니다. Dictionary<string, object> - 여기서 string은 필드 이름입니다. 1 제가

문제 2 I는 열이 원하는 (공급 된 헤더 정보를 사용)이 열을 자동 생성 할

<data:DataGrid Name="_dataGrid" AutoGenerateColumns="True" IsReadOnly="False" Margin="5" Height="200"> 
      <data:DataGrid.Columns> 
       <data:DataGridTextColumn Header="Forename" CanUserSort="True" SortMemberPath="Forename" 
              Binding="{Binding Converter={StaticResource RowIndexConverter}, 
              ConverterParameter=Forename}"/> 
       <data:DataGridTextColumn Header="Surname" CanUserSort="True" SortMemberPath="Surname" 
             Binding="{Binding Converter={StaticResource RowIndexConverter}, 
              ConverterParameter=Surname}"/> 
       <data:DataGridTextColumn Header="Age" CanUserSort="True" SortMemberPath="Age" 
             Binding="{Binding Converter={StaticResource RowIndexConverter}, 
              ConverterParameter=Age}"/> 
       <data:DataGridTextColumn Header="Shoesize" CanUserSort="True" SortMemberPath="Shoesize" 
             Binding="{Binding Converter={StaticResource RowIndexConverter}, 
              ConverterParameter=Shoesize}"/>     
      </data:DataGrid.Columns> 
     </data:DataGrid> 

문제점 :

난으로 XAML이 바인딩 즉 boolean = checkbox)

문제점 3 이상적으로 나는 또한 첫 번째 열에 버튼이 있어야하는지 날씨를 지정하고 싶습니다 (예 :

답변

2

데이터 바인딩을 통해 편집 /보기 버튼) I 단순한 속성 유형을 생성이 의사 코드의 패턴

columns = New DynamicTypeColumnList() 
columns.Add(New DynamicTypeColumn("Name", GetType(String))) 
dynamicType = DynamicTypeHelper.GetDynamicType(columns) 

DynamicTypeHelper.GetDynamicType()을 따르는 방법을 사용했다. 실제로 명확하게 설명에서 제외 사항이 많이있다이

Dim rows as List(Of DynamicItem) 
Dim row As DynamicItem = CType(Activator.CreateInstance(dynamicType), DynamicItem) 
row("Name") = "Foo" 
rows.Add(row) 
dataGrid.DataContext = rows 
+0

같은 일을 할, 유형을 사용하여 이러한 유형 그리고

을 생성하는 방법에 대한 자세한 내용은 this post를 참조하십시오, 그러나 당신을 설정해야 오른쪽 경로에. – kenwarner

+0

아, 맞아. 전에 블라디미르 보두 로프의 방법을 들여다 보았다. 그리고 정말 멋집니다. 그러나 동적 유형 생성은 디자인 타임에 강력한 입력을 사용할 수 없다는 것을 의미하며 런타임 디버깅은 null을 반환합니다. 콜린 (Colin)은 다음과 같은 좋은 게시물을 가지고 있습니다. http://www.scottlogic.co.uk/blog/colin/2009/04/binding-a-silverlight-datagrid-to-dynamic-data-via-idictionary/comment-page- 1/# comment-5535 어떤 일을하는 '표준'방법을 설명합니다. 다른 컨트롤을 사용할 때 약간의 조정이 필요하지만 C# 코드는 매우 세련된 솔루션입니다. –