У меня есть класс модели представления, который спроектирован таким образом, и теперь у меня есть свойство только для получателя, как
public string TPKUri
{
get { return localMapService.UrlMapService; }
}
. Как вы можете видеть из следующего изображения, я получаю URL UrlMapService
вTPKUri
но когда я пытаюсь получить значение TPKUri
в представлении.Например, когда я пытаюсь что-то подобное в MainWindow.xaml
<Grid>
<Label Content="{Binding Source={StaticResource VM}, Path=BasemapUri}" />
</Grid>
, он ничего не отображает.
class MainViewModel : INotifyPropertyChanged
{
public Model myModel { get; set; }
public LocalMapService localMapService;
public event PropertyChangedEventHandler PropertyChanged;
public MainViewModel()
{
myModel = new Model();
CreateLocalService();
}
public string TPKUri
{
get { return localMapService.UrlMapService; }
}
public string MPKMap
{
get { return myModel.MPKPackage; }
set
{
this.myModel.MPKPackage = value;
OnPropertyChanged("MPKUri");
}
}
public async void CreateLocalService()
{
localMapService = new LocalMapService(this.MPKMap);
await localMapService.StartAsync();
}
protected void OnPropertyChanged([CallerMemberName] string member = "")
{
var eventHandler = PropertyChanged;
if (eventHandler != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(member));
}
}
}
Вот полный MainWindow.xmal
<Window x:Class="MPK.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:esri="http://schemas.esri.com/arcgis/runtime/2013"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MPK.ViewModels"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<local:MainViewModel x:Key="VM"/>
</Window.Resources>
<Grid>
<Label Content="{Binding Source={StaticResource VM}, Path=BasemapUri}" />
<esri:MapView x:Name="MyMapView" Grid.Row="0" LayerLoaded="MyMapView_LayerLoaded" >
<esri:Map>
<esri:ArcGISDynamicMapServiceLayer ID="Canada" ServiceUri="{Binding Source={StaticResource VM}, Path=TPKUri}"/>
</esri:Map>
</esri:MapView>
</Grid>
</Window>