Enlace ancho de columna DataGrid a dos columnas de otro DataGrid

Pregunta: ¿Cómo me atoStatName.Width aSamp1.ActualWidth + Samp2.ActualWidth?

Sub-preguntas:

Porque son misWidthConverter funciones nunca ejecutadas (puntos de interrupción nunca alcanzan)?

Cual es el derecho<Binding ... sintaxis para los componentes individuales de MultiBinding?

Lo que probé:

Creo que necesito asignar elDataGridTextColumn.Width conMultiBinding y algún tipo de convertidor.

He intentado reunir una solución de varios ejemplos en línea. Parece que no puedo juntarlo todo.

EDITAR

Con el uso<Binding ElementName="Samp1" Path="ActualWidth" />

Sin errores de compilación ni advertencias.losConvert la función no se ve afectadaNo hay mensajes relevantes en la salida

Con el uso<Binding Source="{x:Reference Samp1}" Path="ActualWidth" />

Error de compilación (que aún permite la ejecución): la conversión especificada no es válida. por<MultiBinding>...</MultiBinding>.Convert se llama tres veces al cargar. No se llama al cambiar el tamaño de la columnaSamp1.En cada ejecución deConvert:

System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='40' MultiBindingExpression:target element is 'DataGridTextColumn' (HashCode=64879470); target property is 'Width' (type 'DataGridLength')

Intento de enlace múltiple (parte xaml)

<Page.Resources>
    <local:WidthConverter x:Key="WidthConverter" />
</Page.Resources>

<StackPanel>

    <DataGrid IsReadOnly="True" HeadersVisibility="Column">
        <DataGrid.Columns>
            <DataGridTextColumn x:Name="Samp1" Binding="{Binding a}" Header="S1" />
            <DataGridTextColumn x:Name="Samp2" Binding="{Binding b}" Header="S2" />
            <DataGridTextColumn x:Name="Total" Binding="{Binding c}" Header="Tot" />
        </DataGrid.Columns>
        <local:MyGenericRecord a="5000" b="2500" c="7500" />
        <local:MyGenericRecord a="1000" b="1500" c="2500" />
    </DataGrid>

    <DataGrid IsReadOnly="True" HeadersVisibility="Column">
        <DataGrid.Columns>
            <DataGridTextColumn x:Name="StatName"  Binding="{Binding a}" Header="Stat">
                <DataGridTextColumn.Width>
                    <MultiBinding Converter="{StaticResource WidthConverter}">
                        <Binding ElementName="Samp1" Path="ActualWidth" />
                        <Binding ElementName="Samp2" Path="ActualWidth" />
                    </MultiBinding>
                </DataGridTextColumn.Width>
            </DataGridTextColumn>
            <DataGridTextColumn x:Name="StatValue" Binding="{Binding b}" Header="Val" Width="{Binding ElementName=Total, Path=ActualWidth}" />
        </DataGrid.Columns>
        <local:MyGenericRecord a="Min" b="2500" />
        <local:MyGenericRecord a="Max" b="7500" />
        <local:MyGenericRecord a="Average" b="5000" />
    </DataGrid>

</StackPanel>

Intento de enlace múltiple (parte del código)

public class WidthConverter : IMultiValueConverter
{

    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        double totalWidth = 0;

        foreach (DataGridLength Width in values)
            totalWidth += Width.Value;

        return totalWidth;
    }
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta