void Map_ExtentChanged(object sender, ExtentEventArgs e)
{
ScaleBarUnit scaleBarUnit;
double width = e.NewExtent.Width;
if (width < 10)
scaleBarUnit = ScaleBarUnit.Centimeters;
else if (width > 100000)
scaleBarUnit = ScaleBarUnit.Kilometers;
else
scaleBarUnit = ScaleBarUnit.Meters;
myScaleBar.DisplayUnit = scaleBarUnit;
}and XAML<esri:Map x:Name="Map" ExtentChanged="Map_ExtentChanged">
You could change the scalebar displayunit when the map extent changes.
Something like (to adapt from your map units and the expected scalebar units):
void Map_ExtentChanged(object sender, ExtentEventArgs e) { ScaleBarUnit scaleBarUnit; double width = e.NewExtent.Width; if (width < 10) scaleBarUnit = ScaleBarUnit.Centimeters; else if (width > 100000) scaleBarUnit = ScaleBarUnit.Kilometers; else scaleBarUnit = ScaleBarUnit.Meters; myScaleBar.DisplayUnit = scaleBarUnit; }and XAML
<esri:Map x:Name="Map" ExtentChanged="Map_ExtentChanged">
Please look at this related thread: http://forums.arcgis.com/threads/15157-Access-ScaleBars-Current-Value Post #4, you can update this style.