Вы можете достичь своей цели с помощью пользовательского элемента управления UserControl следующим образом.
DoubleValuesCell.xaml
<UserControl x:Class="WpfApplication1.DoubleValuesCell"
x:Name="root"
...>
<StackPanel>
<TextBlock Text="{Binding NewValue, ElementName=root}"/>
<TextBlock Margin="7,0,0,0" Text="{Binding OldValue, ElementName=root}"/>
</StackPanel>
</UserControl>
DoubleValuesCell.xaml.cs
public partial class DoubleValuesCell : UserControl
{
public static readonly DependencyProperty NewValueProperty = DependencyProperty.Register("NewValue", typeof(object), typeof(DoubleValuesCell));
public static readonly DependencyProperty OldValueProperty = DependencyProperty.Register("OldValue", typeof(object), typeof(DoubleValuesCell));
public object NewValue
{
get { return GetValue(NewValueProperty); }
set { SetValue(NewValueProperty, value); }
}
public object OldValue
{
get { return GetValue(OldValueProperty); }
set { SetValue(OldValueProperty, value); }
}
public DoubleValuesCell()
{
InitializeComponent();
}
}
XXXWindow.xaml
<Window x:Class="WpfApplication1.XXXWindow"
xmlns:local="clr-namespace:WpfApplication1"
...>
...
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<local:DoubleValuesCell NewValue="{Binding MyValue}" OldValue="{Binding old.MyValue}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
...
</Window>
ОБНОВЛЕНИЕ
Вы можете свернуть второй элемент управления с помощью DataTrigger.
<StackPanel>
<TextBlock Text="{Binding NewValue, ElementName=root}"/>
<TextBlock Margin="7,0,0,0" Text="{Binding OldValue, ElementName=root}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding OldValue, ElementName=root}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
Приведенный выше код означает, что второй TextBlock свернут, если значение источника привязки (свойство OldValue) равно нулю.