2016-10-05 3 views
0

행에 대한 DataGrid-column 아이콘을 결정해야하며 변환기에서 수행하도록 생각했습니다. 컨버터는 전체 행을 가져온 다음 XAML-형상WPF DataGrid 행 클래스 인스턴스에 바인딩하는 방법과 속성이 아닌 방법?

<DataGrid CanUserAddRows="False" CanUserResizeColumns="True" CanUserSortColumns="True" IsReadOnly="True" 
       ItemsSource="{Binding SelectedObjectsMmsDataItems}"> 
     <DataGrid.Resources> 
      <DataTemplate x:Key="TypeImageColumnTemplate" > 
       <Label Style="{StaticResource DataGridIconColumnLabel}"> 
        <Path Data="{Binding???, Converter={StaticResource MmsDataToPathConverter}}" /> 
       </Label> 
      </DataTemplate> 
      <DataGrid.Columns> 
      <DataGridTemplateColumn Header="{StaticResource ResourceKey=StrIcon}" CellTemplate="{StaticResource TypeImageColumnTemplate}" Width="Auto"/> 

어떻게이 일을 반환하는 여러 속성에 의해 결정 것인가?

답변

0

바인딩 구조가 IEnumerable 또는 클래스 구조와 같은 Collection 인 경우 사용자 지정 속성을 노출하고 거기에서 모든 조작을 수행하여 수행 할 수 있어야합니다. 그런 다음

public class YourClass 
{ 
    public YourClass() 
    {...} 

    public int SomeField { get; set;} 
    public string OtherField {get; set;} 
    ... 

    public whateverDataType YourNewPropertyToBindTo 
    { 
     get { if(SomeField == 1 && OtherField == "Test") 
       return "X"; 

      if(SomeField == 2 && OtherFIeld == "SomethingElse" 
       return "Y"; 

      return "Z"; // as a default return value. } 
    } 
} 

같은 무언가가, 당신은 당신의 기록/클래스 구조 소스에서 직접 모든 속성과 적절한 데이터 형식에 액세스 할 수 있습니다. 희망이 옵션이 도움이됩니다.

+0

감사합니다! 내가 나 자신을 제대로 설명했는지 모르지만, 이것이 어떻게 행해지는지 발견했다. 내 문제는 변환기 앞에 쉼표 (,)였습니다. 내 대답을 보라. –

0

다음은 XAML로 수행됩니다. 다른 단어가없는 단어 묶기 만있는 경우 변환기 앞에 쉼표를 사용하지 않아야합니다.

<Path Data="{Binding Converter={StaticResource MmsDataToPathConverter}}"  
1

이것은 당신이 당신에게 줄 것이다 DataGridRow

<Path Data="{Binding ., RelativeSource={RelativeSource AncestorType=DataGridRow}, Converter={StaticResource MmsDataToPathConverter}}" /> 

을 줄 것이다 Item (예를 들어, 직원) 해당 행에 의해 발표했다.

<Path Data="{Binding DataContext, RelativeSource={RelativeSource AncestorType=DataGridRow}, Converter={StaticResource MmsDataToPathConverter}}" />