私は TextBlock と Line をそれぞれ専用の StackPanel に並べて配置しています。
個別にシェーディングするのではなく、2 つのオブジェクトに LinearGradientBrush を広げる必要があります。
私のプロジェクトは現在次のようになっています。
http://img188.imageshack.us/img188/1268/seperategradients.png
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Bottom">
SomeTextContent
<TextBlock.Foreground>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset="0" Color="Blue" />
<GradientStop Offset="1" Color="Orange" />
</LinearGradientBrush>
</TextBlock.Foreground>
</TextBlock>
<Line VerticalAlignment="Bottom" X2="100">
<Line.Stroke>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset="0" Color="Blue" />
<GradientStop Offset="1" Color="Orange" />
</LinearGradientBrush>
</Line.Stroke>
</Line>
</StackPanel>
示されているように、グラデーションは Line とは別に TextBlock に適用されます。TextBlock と Line にグラデーションを 1 回のパスで適用する方法を見つける必要があります - それらが完全に同じオブジェクトであるかのように。この例では、テキストはほとんど青く、線はほとんどオレンジ色にする必要があります。