1

別のデータグリッドにバインドされたコンバーターに ConverterParameter として datagrid.CurrentCell (または Content または dataGrid 自体) を渡すことが可能かどうかを知りたいです。最初の dg の Selected(Current) Cell に含まれる値の 1 つを含む 2 番目の dg のセルを強調表示しようとしています。これまでのところ、CellStyle (RelativeSource Self) プロパティを上記のコンバーターにバインドすることで、2 番目のデータグリッドのセルにアクセスできました。

更新:nitの投稿で示唆されているように、私は次のようにしました:

<Window.Resources>
    <local:currentValsHLM x:Key="cellColorConverter" />...

<DataGrid x:Name="dataGrid2" AutoGenerateColumns="True">
        <DataGrid.CellStyle>
            <Style TargetType="DataGridCell">
                <Setter Property="Background">
                    <Setter.Value>
                        <MultiBinding Converter="{StaticResource cellColorConverter}">
                            <MultiBinding.Bindings>
                                <Binding RelativeSource="{RelativeSource Self}" />
                                <Binding Path="Row" /><!--Neeeded because previous bind datacell Content will be always (friggin) null -->
                                <!-- Here i would like to bind to datagrid1 holding the data to compare in the converter -->
                            </MultiBinding.Bindings>
                        </MultiBinding>
                    </Setter.Value>
                </Setter>
                <Setter Property="FontWeight">
                    <Setter.Value>
                        <MultiBinding Converter="{StaticResource cellColorConverter}">
                            <MultiBinding.Bindings>
                                <Binding RelativeSource="{RelativeSource Self}" />
                                <Binding Path="Row" />
                                <!-- Same as above -->
                            </MultiBinding.Bindings>
                        </MultiBinding>
                    </Setter.Value>
                </Setter>
            </Style>
        </DataGrid.CellStyle>
    </DataGrid>

MultiBinding.Bindings セクションには、コンバーターが強調表示する必要があるセルとそうでないセルを選択するために知っておく必要があるデータ ((string)dataGrid1.CurrentCell.Content だと思います) がありません。そのようなデータを取得する方法はありますか?

更新 2: そして....やった! (わかりました、ばかげた)答えは でした<Binding ElementName="dataGrid1" />。CurrentItem[CurrentColumn.Header] を使用すると、必要なデータを最終的に保持 (および圧縮) できます。私に万歳!

注:信じられない!これまで、最初のバインディングは datagrid2 の現在の DataGridCell への参照を提供していましたが、その内容は常に null (役に立たない) であったため、実際のデータにアクセスするには 2 番目のバインドが必要でした。さて、白紙の状態で、WPF (コードネーム BTCH) は実際の値 (実際の値) で満たされたオブジェクトをコンバーターに送信します。これで、「私の友人システムでは xaml が機能していないのに、なぜ私の友人システムでは機能していたのか!」というすべての投稿を理解できました。

4

1 に答える 1

0

ConverterParameter はバインディングをサポートしていません。MultiBinding を使用して必要なプロパティ (グリッドの SelectedItem、またはグリッドの現在のセル コンテンツ) にバインドし、IMultiValueConverter を使用してプロパティをマルチバインドしてみてください

于 2013-10-05T15:21:21.420 に答える