2012-08-10 3 views
0

I DataGrid와 두 개의 열이 있습니다.
첫 번째 : LimitType 및 둘째 : LimitValue입니다. 예를 들어DataGrid의 변환기

: 첫 번째 칼럼 : 0 - 돈 유형 - 1의 경우 비율 유형 두 번째 열을 수행해야합니다 그렇지 않으면 백분율 형식으로 돈을 형식의 첫 번째 열 쇼 값에서 0의 경우이다.

첫 번째 열의 값에 따라 두 번째 열의 형식을 지정하려면 어떻게해야합니까? Converter를 사용하여 작업을 시도했지만 첫 번째 열의 값을 매개 변수로 전달할 수 없습니다.

답변

0

: 여기

<DataGridTextColumn Header="Value" Binding="{Binding MySelf, Converter={StaticResource valueFormatConverter}}" /> 

는 변환기입니다.

첫 번째 열과 두 번째 열의 값에 대해 DataGridTextColumn을 MultiplyBinding 형식에 바인딩해야합니다.

0

DataGrid의 열 정의에서 개체 자체를 바인딩 할 수 있습니다.

나는 그런 일에 대해 생각하고 있어요 :

<DataGridTextColumn Header="Value" Binding="{Binding Converter={StaticResource valueFormatConverter}}" /> 

있지만 인수 바인딩 단순, 내가 예상하는대로 개체에 직접 바인딩 것 같다 그래서 아마 트릭을 사용하여 추가하지 않습니다 객체 자체를 참조하는 클래스의 멤버.

public class DummyClass 
{ 
    public int Type { get; set; } 
    public int Value { get; set; } 
    public DummyClass MySelf { get; set; } 
} 

그런 다음 바인딩에 사용할 수 있습니다 : 나는 solulution을 발견

public class ValueFormatConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var v = (MainWindow.DummyClass)value; 

     if (v.Type == 0) 
     { 
      return v.Value + " (Type 0)"; // Do your formatting here 
     } 
     else if (v.Type == 1) 
     { 
      return v.Value + " (Type 1)"; // Do your formatting here 
     } 
[...]