J'ai un problème avec un MultiBinding:L'accès aux données liées à IMultiValueConverter.ConvertBack() en C#/WPF
<Canvas>
<local:SPoint x:Name="sp" Width="10" Height="10">
<Canvas.Left><!-- irrelevant binding here --></Canvas.Left>
<Canvas.Top>
<MultiBinding Converter="{StaticResource myConverter}" Mode="TwoWay">
<Binding ElementName="cp1" Path="(Canvas.Top)"/>
<Binding ElementName="cp1" Path="Height"/>
<Binding ElementName="cp2" Path="(Canvas.Top)"/>
<Binding ElementName="cp2" Path="Height"/>
<Binding ElementName="sp" Path="Height"/>
<Binding ElementName="sp" Path="Slope" Mode="TwoWay"/>
</MultiBinding>
</Canvas.Top>
</local:SPoint>
<local:CPoint x:Name="cp1" Width="10" Height="10" Canvas.Left="20" Canvas.Top="150"/>
<local:CPoint x:Name="cp2" Width="10" Height="10" Canvas.Left="100" Canvas.Top="20"/>
</Canvas>
Pour calculer la valeur Canvas.Top, monconvertisseur a besoin de toutes les valeurs liées. Cela fonctionne très bien dans Convert(). Dans l'autre sens, myConverter devrait idéalement calculer la valeur de Slope (Binding.DoNothing pour le reste), mais il a besoin des autres valeurs en plus de Canvas.Top un passé à ConvertBack(). Quelle est la bonne façon de résoudre cela?
J'ai essayé de créer la liaison OneWay et de créer une liaison multiple supplémentaire pour le SPoint.Slope local, mais cela provoque une récurrence infinie et un débordement de pile. Je pensais que le ConverterParameter pourrait être utilisé, mais il semble que ce ne soit pas possible de s'y lier.
Merci, c'est très perspicace. Cela me rappelle aussi que lorsque les choses se compliquent, le problème pourrait être la conception. :) Je vais peut-être reconsidérer mon approche. – absence