public class MainPageViewModel : ViewModelBase
{
private TileLayer.LayerType _newLayerType;
public RelayCommand UpdateBackgroundCommand { get; private set; }
public MainPageViewModel()
{
_newLayerType = TileLayer.LayerType.AerialWithLabels;
WireCommands();
}
private void WireCommands()
{
UpdateBackgroundCommand = new RelayCommand(UpdateBackground);
UpdateBackgroundCommand.IsEnabled = true;
}
#region Properties
public TileLayer.LayerType NewLayerType
{
get
{
return _newLayerType;
}
set
{
if (_newLayerType != value)
{
_newLayerType = value;
OnPropertyChanged("NewLayerType");
}
}
}
#endregion
public void UpdateBackground(object param)
{
switch(param.ToString())
{
case "Road":
_newLayerType = TileLayer.LayerType.Road;
MessageBox.Show(_newLayerType.ToString());
break;
case "Aerial":
_newLayerType = TileLayer.LayerType.Aerial;
MessageBox.Show(_newLayerType.ToString());
break;
case "AerialWithLabels":
_newLayerType = TileLayer.LayerType.AerialWithLabels;
MessageBox.Show(_newLayerType.ToString());
break;
}
}
}public class ViewModelBase : INotifyPropertyChanged
{
public bool IsDesignTime
{
get { return DesignerProperties.IsInDesignTool; }
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propName)
{
var propChanged = PropertyChanged;
if (propChanged != null)
{
propChanged(this, new PropertyChangedEventArgs(propName));
}
}
#endregion
}
xmlns:bing="clr-namespace:ESRI.ArcGIS.Client.Bing;assembly=ESRI.ArcGIS.Client.Bing"
xmlns:esri="http://schemas.esri.com/arcgis/client/2009">
<Grid x:Name="LayoutRoot" Background="White">
<esri:Map x:Name="MyMap">
<bing:TileLayer
ID="BingLayer" LayerStyle="Aerial"
ServerType="Production"
Token="{StaticResource BingKey}"/>
</esri:Map>
<ComboBox x:Name="BingLayerStyle"
SelectionChanged="BingLayerStyle_SelectionChanged"
SelectedItem="{Binding ElementName=MyMap, Path=Layers[BingLayer].LayerStyle, Mode=TwoWay}"
VerticalAlignment="Top" HorizontalAlignment="Center"/>
</Grid>
BingLayerStyle.ItemsSource = new ESRI.ArcGIS.Client.Bing.TileLayer.LayerType[]{
ESRI.ArcGIS.Client.Bing.TileLayer.LayerType.Aerial,
ESRI.ArcGIS.Client.Bing.TileLayer.LayerType.AerialWithLabels,
ESRI.ArcGIS.Client.Bing.TileLayer.LayerType.Road};
BingLayerStyle.SelectedIndex = 1;