Also, if the API developers don't have an issue with it, maybe in a future version could make the actual double value property public and read-only to the users?
string stringValue = ScaleBarValueTextBlock.Text.Replace(ScaleBar.DisplayUnit.ToString(), string.Empty).Trim(); double doubleValue = Convert.ToDouble(stringValue, CultureInfo.InvariantCulture); // or this below //double doubleValue = double.IsNaN; //double.TryParse(stringValue, out doubleValue);
private void ScaleBar_Loaded(object sender, RoutedEventArgs e) { ScaleBar.ApplyTemplate(); ScaleBarValueTextBlock = ScaleBar.Template.FindName("ScaleBarValue", ScaleBar) as TextBlock; } private void Map_ExtentChanged(object sender, ESRI.ArcGIS.Client.ExtentEventArgs e) { if (ScaleBarValueTextBlock != null) { if (ScaleBar.DisplayUnit == ScaleBarUnit.Miles && ScaleBarValueTextBlock.Text[0] == '0') ScaleBar.DisplayUnit = ScaleBarUnit.Feet; else if (ScaleBar.DisplayUnit == ScaleBarUnit.Feet && Convert.ToDouble(ScaleBarValueTextBlock.Text.TrimEnd(" Feet".ToCharArray())) > 5279) ScaleBar.DisplayUnit = ScaleBarUnit.Miles; } }
<Style x:Key="ScaleBarStyle" TargetType="esri:ScaleBar"> <Setter Property="FillColor1" Value="White"/> <Setter Property="FillColor2" Value="Black"/> <Setter Property="TextColor" Value="White"/> <Setter Property="TargetWidth" Value="150.0"/> <Setter Property="FontSize" Value="10.0"/> <Setter Property="BarHeight" Value="10.0"/> <Setter Property="Foreground" Value="White"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="esri:ScaleBar"> <StackPanel Orientation="Horizontal"> <Grid x:Name="ScaleBarBlock" Height="{TemplateBinding BarHeight}" VerticalAlignment="Center"> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="2*"/> <ColumnDefinition Width="5*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="1*"/> <RowDefinition Height="1*"/> </Grid.RowDefinitions> <Rectangle Grid.Column="0" Fill="{TemplateBinding FillColor2}" Grid.Row="0"/> <Rectangle Grid.Column="1" Fill="{TemplateBinding FillColor1}" Grid.Row="0"/> <Rectangle Grid.Column="2" Fill="{TemplateBinding FillColor2}" Grid.Row="0"/> <Rectangle Grid.Column="3" Fill="{TemplateBinding FillColor1}" Grid.Row="0"/> <Rectangle Grid.Column="4" Fill="{TemplateBinding FillColor2}" Grid.Row="0"/> <Rectangle Grid.Column="0" Fill="{TemplateBinding FillColor1}" Grid.Row="1"/> <Rectangle Grid.Column="1" Fill="{TemplateBinding FillColor2}" Grid.Row="1"/> <Rectangle Grid.Column="2" Fill="{TemplateBinding FillColor1}" Grid.Row="1"/> <Rectangle Grid.Column="3" Fill="{TemplateBinding FillColor2}" Grid.Row="1"/> <Rectangle Grid.Column="4" Fill="{TemplateBinding FillColor1}" Grid.Row="1"/> </Grid> <TextBlock x:Name="ScaleBarValue" Loaded="ScaleBarValue_Loaded" Foreground="{TemplateBinding TextColor}" VerticalAlignment="Center"/> </StackPanel> </ControlTemplate> </Setter.Value> </Setter> </Style>
TextBlock scaleBarValue; private void ScaleBarValue_Loaded(object sender, RoutedEventArgs e) { scaleBarValue = sender as TextBlock; } private void MyMap_ExtentChanged(object sender, ESRI.ArcGIS.Client.ExtentEventArgs e) { //check for scaleBarValue.Text }
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.