2012-01-10 3 views
3

내 DataGrid (예 : Product 및 Price)의 내용이 XML 파일에서로드되고 모든 것은 DataGrid에서 정렬 할 때 텍스트로 처리됩니다.WPF DataGrid에서 숫자로 XML 파일의 텍스트를 정렬하는 방법?

정렬 할 때 가격을 숫자로 처리하도록 DataGrid에 알리는 방법은 무엇입니까? 감사.

여기에 관련 XAML이 있습니다 (코드가 없습니다). 이이 목록에 넣고,

코드없이
<DataGridTemplateColumn Header="Length" SortMemberPath="Length" Width="100"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock TextAlignment="Right" VerticalAlignment="Center" Text="{Binding XPath=Length}"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
+2

사용합니다. –

답변

4

Binding에 Converter를 추가 할 수 있습니다. 1 단계 : 변환기 클래스를 만듭니다.

[ValueConversion(typeof(string), typeof(int))] 
public class StringToIntConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return Int32.Parse(value.ToString()); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value.ToString(); 
    } 
} 

약간의 유효성 검사가 권장 될 수 있지만, 이는 기본적인 예일뿐입니다.

2 단계 : 변환기를 인스턴스화하십시오. 네임 스페이스 선언을 Xaml에 추가해야합니다.

<Window.Resources> 
    <StringToIntConverter x:Name="stringToInt"/> 
</Window.Resources> 

3 단계 : 코드는 언제나 말보다 더 나은보기 그것은

<DataGridTemplateColumn Header="Length" SortMemberPath="Length" Width="100"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <TextBlock TextAlignment="Right" VerticalAlignment="Center" Text="{Binding XPath=Length, Converter={StaticResource stringToInt}}"/> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
1

, 이것은 단지 추측이지만, 난 당신이 객체로 XML 직렬화 복원을하고 있으리라 믿고있어 다음 데이터 그리드는 : 나는 수와 길이를 정렬 할 목록에 묶여있다. 목록 클래스의 가격 데이터 필드를 int로 만들면 DataGrid는이를 숫자로 처리합니다.

+0

아니요, 코드 뒤에 수행되는 일종의 직렬화가 없습니다. 모든 것은 XAML 파일에서 질문에 추가 된대로 선언적입니다. – user763554

+0

이제는 좋은 질문입니다. 좋은 대답이 있습니다. :) –

관련 문제