2016-10-05 20 views
0

行のDataGrid-columnのアイコンを決める必要があり、コンバータにその行為をさせてもらうと思いました。 Converterはちょうど全体の行を取得し、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またはコレクションの、独自のカスタムプロパティを露出し、そこからすべての操作を行うことによって行うことができるはずということであれば。何かのように

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}}" /> 
関連する問題