2012-08-09 2 views
0

직접 가져 오도록하겠습니다. DataGrid에는 다음과 같이 몇 가지 열이 설정되어 있습니다.가상화 된 속성의 WPF DataGrid 정렬

<ctrl:DataGridWithFooter 
     FooterRowsCount="1" 
     x:Name="MyGrid" 
     CanUserDeleteRows="False" 
     CanUserSortColumns="True" 
     AutoGenerateColumns="False" 
     ItemsSource="{Binding Path=Model, UpdateSourceTrigger=PropertyChanged}" 
     IsEnabled="{Binding Path=Idle}"> 
       <DataGrid.Columns> 
        <DataGridTextColumn Header="Level" 
             Binding="{Binding Path=Name, Mode=OneWay}" /> 
<!--Snip--> 
</ctrl:DataGridWithFooter> 

그리고 원하는 모델입니다. 응용 프로그램이 실행되면,하지만, 난 모델의 목록의 요소를 반영하는 새 열을 추가 할 것입니다 상황을 가지고, 그래서 나는

<DataGridTextColumn Binding="{Binding Path=Attributes[0]}" /> 

또는 이와 유사한 같은 바인딩 식을 얻는다. 디스플레이 및 자체 정렬 괜찮지 만, 내가 바닥에 내 합계에 대한 행을 강제로 필요한 문제가 만났는데, 나는 그것을 확인하기 위해 온라인에서 찾은 약간의 코드를 사용해야 할 필요가있다. (available here, works as advertised) . 그러나이 새로운 맞춤 DataGrid 클래스의 정렬 클래스가 목록 요소 바인딩과 충돌하는 것을 발견했습니다. 내 질문은 내가 밖으로 반영하고 목록 요소에 정렬 할 수 있도록 필요한 모든 정보를 얻기 위해이 생성자

public PropertyAccessor(Type targetType, string property) { 
    IsList_ = false; 
    mTargetType = targetType; 
mProperty = property; 

    PropertyInfo propertyInfo = 
     targetType.GetProperty(mProperty); 

    mCanRead = propertyInfo.CanRead; 
    mCanWrite = propertyInfo.CanWrite; 
    mPropertyType = propertyInfo.PropertyType; 
} 

을 수정하는 것이 방법이다?

답변

0

내 샘플 (내 블로그)을 사용하게되어 기쁩니다. 이를 수행하는 방법 중 하나는 특정 속성에 대한 공용 getter를 만드는 것입니다. 별로 편리하지 않을 수도 있습니다. CuZ PropertyAccessor에는 속성이 필요합니다. 또는 "속성 [0]"속성의 첫 번째 값을 가져오고 인덱스가 [0] 인 요소를 가져 오는 것일 수도 있습니다.

또한이 작업을위한 다른 솔루션을 만들기로 결정했습니다. 주요 아이디어는 DataGrid 용 래퍼를 만드는 것입니다.

<StackPanel> 
    <DataGrid/> 
    <Footer/> 
</StackPanel> 

바닥 글 텍스트 상자와 그리드 (이 여러 행을 포함 할 수 있습니다)입니다 : 일반적으로 그것은 것 같습니다. 이 표의 열DataGrid의 열과 동기화됩니다. 또한 병합 된 셀이있는 꼬리말을 만들 수 있습니다. 이 솔루션에서는 정렬을 위해 이동할 필요가 없습니다. DataGrid에 의해 수행됩니다.

Here is how it looks like. 나중에 블로그에서 코드를 공유 할 것입니다. 내 블로그에서 나를 만날 수 있습니다.

+0

그래, 그게 근본적으로 내가 한 일을 해본 결과 두 개 이상의 그리드를 함께 고정시킬 수있는 "동기화 된 그리드"클래스를 발견했다. 귀하의 솔루션은 훌륭하고 나중에 사용하기 위해 라이브러리에 던져 넣은 구성 요소이지만, 불행히도 여기에는 적합하지 않습니다. 당신의 도움을 주셔서 감사합니다! – HeadBangingSloth

+0

@HeadBangingSloth 내 블로그에 솔루션을 보내 주시겠습니까? 심지어 여기에. – Artiom

+0

죄송합니다. 귀하의 페이지에서 러시아어를 읽을 수는 없지만 내가 사용한 것은 [여기]입니다 (http://thibaud60.blogspot.com.au/2010/02/footer-on-wpf-datagrid-by-use). -several.html) – HeadBangingSloth