2010-01-11 5 views
1

GridView 열을 동적으로 추가/제거해야합니다. 각 열은 KeyedCollection (tn 'int'로 인덱싱 됨)에 저장된 다른 요소의 정보를 표시합니다.매개 변수와 함께 DataTemplate을 사용하는 방법이 있습니까?

<GridViewColumn Header="bid"> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Width="60" DataContext="{Binding Elements}" Text="{Binding [546].PropName}" TextAlignment="Center" /> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

그러나, 나는 다른 정수 키,이 더 추가 할 필요가 실행 시간에 어떤 시점에서 내가 만드는 방법을 잘 모르겠어요, 다음과 같이 기본적인 기술은 작동하지만 인덱스를 필요 각각 다른 바인딩 인덱스가있는 새로운 DataTemplates

... XamlParser을 사용하여 새 DataTemplate을 매우 추한 것

어떤 도움을 구축?

+0

"PropName"은 GridView에 배치 된 각 개체의 속성입니까? – arconaut

+0

아니요, 실제로 ListView의 ItemsSource에있는 GridView에 배치 된 각 객체에는 '구성 요소'속성이 있습니다. 객체를 포함하는 KeyedCollection은 각각 PropName 속성이 – user142638

+0

이고 '546'은 어디에서 가져 왔습니까? 그것은 각 물체에 대해 어떤 종류의 무작위입니까? – arconaut

답변

0

글쎄, 나는 당신이 당신의 객체가 약간의 추가적인 속성을 필요로한다는 것을 이해하는 것으로 보인다. KeyValueFromKey과 같은 것입니다. 이 프로퍼티는 이것과 유사하게 보일 수

public int Key { get; set; } 

public object ValueFromKey 
{ 
    get { return this[Key]; } 
} 

는 다음 순간에 당신은 당신이 (이 예에서 546 같은) '매직'번호로 키 속성의 값을 설정해야의 GridView 열을 추가하고 있습니다.

그리고 당신의 DataTemplate이처럼 간단 보일 것이다 : 당신이 클래스를 변경할 수없는 경우

<DataTemplate> 
    <TextBlock 
     Width="60" 
     Text="{Binding ValueFromKey.PropName}" 
     TextAlignment="Center" 
     /> 
</DataTemplate> 

문제가 발생한다. 그런 다음 자신의 클래스 (일종의 ViewModel)로 포장하여 UI를 새 인스턴스 모음에 바인딩 할 수 있습니다.

+0

글쎄요, 아니요. 문제는 소위 '마법'번호가 열과 연관되어 있으며 (각 열은 다른 숫자를 사용해야 함) 제안하는 Key 속성은 행과 연결됩니다 ... – user142638

관련 문제