Попробуйте связать OneWay.Я думаю, что OneWayToSource означает, что хочет написать в источник.
http://msdn.microsoft.com/en-us/library/system.windows.data.bindingmode.aspx
Я провел тест и достаточно уверен, что Width = NaN, пока ширина не будет присвоена (установлена).Я понимаю, что это не то поведение, которое вы хотите.Попробуй это.Где назначена ширина, сообщается (как 200).Если ширина не назначена, она указывается как NaN.Но ActualWidth - это правильно.ActualWidth есть, но, очевидно, способ, которым вы пытаетесь его получить, не работает.
<StackPanel Orientation="Vertical">
<Border BorderThickness="1" BorderBrush="Red">
<TextBlock Name="tbwidthA" Text="{Binding Path=Howdy}" HorizontalAlignment="Left" Width="200"/>
</Border>
<TextBlock Name="tbwidthAw" Text="{Binding ElementName=tbwidthA, Path=Width}" HorizontalAlignment="Left"/>
<TextBlock Name="tbwidthAaw" Text="{Binding ElementName=tbwidthA, Path=ActualWidth}" HorizontalAlignment="Left" />
<Border BorderThickness="1" BorderBrush="Red">
<TextBlock Name="tbwidthB" Text="{Binding Path=Howdy}" HorizontalAlignment="Left" />
</Border>
<TextBlock Name="tbwidthBw" Text="{Binding ElementName=tbwidthB, Path=Width}" HorizontalAlignment="Left" />
<TextBlock Name="tbwidthAbw" Text="{Binding ElementName=tbwidthB, Path=ActualWidth}" HorizontalAlignment="Left" />
<Button Content="TBwidth" Click="Button_Click_1" Width="60" HorizontalAlignment="Left" />
</StackPanel>
Что интересно, Button сообщает правильное значение ActualWidth, но Width равно NaN
Debug.WriteLine(tbwidthB.Width.ToString());
Debug.WriteLine(tbwidthB.ActualWidth.ToString());