-1

ItemSourceの値に応じて行の背景を変更したいDataGridがあるので、現在のアイテムを渡す必要がありますが、その方法がわかりません。

私はそれをしています:

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow">
        <Setter Property="Background">
            <Setter.Value>
                <MultiBinding Converter="{StaticResource myDataGridBackgroundMultiValueConverter}">
                    <MultiBinding.Bindings>
                        <Binding ElementName="ucPrincipal" Path="DataContext.MyProperty01FromDataContext"/>
                        <Binding ElementName="ucPrincipal" Path="DataContext.MyProperty02FromDataContext"/>
                        <Binding ElementName="ucPrincipal" Path="DataContext.MyProperty03FromDataContext"/>
                        <Binding ElementName="dgdMyGrid" Path="CurrentItem"/>
                    </MultiBinding.Bindings>
                </MultiBinding>
            </Setter.Value>                        
        </Setter>
    </Style>
</DataGrid.RowStyle>

DataGridには、の(多くのプロパティを持つ)ItemsSourceコレクションがあります。行の情報を含むMyDataClassをコンバーターに渡す必要があります。MyDataClassViewModel

私は常にnullを受け取るため、CurrentItemは機能しません。

他のすべてのパラメータは問題ありません。

4

2 に答える 2

2

DataGridCurrentItemプロパティはなく、CollectionViews持つだけで、DataGrid にはSelectedItem. このため、バインド エラーも表示されるはずです。

現在のアイテムとは、スタイル設定された行が属するデータ アイテムを意味しDataContext、現在の行の になり<Binding />ます。

于 2012-09-13T11:39:51.910 に答える
0

最後に、行の dataContext をコンバーターに渡す方法を取得します。私は次のことを行います:

           <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Setter Property="Visibility" Value="{Binding ChangeTracker.State, Converter={StaticResource visibilidadFilaBorradaConverter}}"/>
                    <Setter Property="Background">
                        <Setter.Value>
                            <MultiBinding Converter="{StaticResource ucTareasMatenimientoDataGridBackgroundMultiValueConverter}">
                                <MultiBinding.Bindings>
                                    <Binding ElementName="ucPrincipal" Path="DataContext.Property01"/>
                                    <Binding Path="DataContext" RelativeSource="{RelativeSource Mode=Self}" />
                                    <Binding ElementName="ucPrincipal" Path="DataContext.Property02"/>
                                    <Binding ElementName="ucPrincipal" Path="DataContext.Property03"/>
                                    <Binding ElementName="ucPrincipal" Path="DataContext.Property04"/>                                    
                                </MultiBinding.Bindings>
                            </MultiBinding>
                        </Setter.Value>                        
                    </Setter>
                </Style>
            </DataGrid.RowStyle>

複数値コンバーターの 2 番目のパラメーターでは、RelativeSource を使用して、行の datContext を渡すことができるようにします。このようにして、その情報をコントロールの主要な dataContext の他のプロパティと比較できます。

于 2012-09-13T14:54:52.140 に答える