The Layer dependency properties seem to be gone in 100.1? Was that intentional? Is there an alternative approach for binding to Layer properties? Thanks.
10.2.7
Layer Class
100.1
It is an intentional change for v100+. Were there specific binding scenarios that you're unable to do now? If yes, please share so we can try and accommodate in the future.
Meanwhile, you can try the following code. You should still be able to do binding to Layer properties.
xmlns<SPAN class="punctuation token">:</SPAN>esri<SPAN class="operator token">=</SPAN><SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fschemas.esri.com%2Farcgis%2Fruntime%2F2013" target="_blank">http://schemas.esri.com/arcgis/runtime/2013</A><SPAN>"</SPAN></SPAN><SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>Grid<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>esri<SPAN class="punctuation token">:</SPAN>MapView x<SPAN class="punctuation token">:</SPAN>Name<SPAN class="operator token">=</SPAN><SPAN class="string token">"MyMapView"</SPAN> <SPAN class="operator token">/</SPAN><SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>StackPanel VerticalAlignment<SPAN class="operator token">=</SPAN><SPAN class="string token">"Top"</SPAN> HorizontalAlignment<SPAN class="operator token">=</SPAN><SPAN class="string token">"Right"</SPAN><SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>ItemsControl ItemsSource<SPAN class="operator token">=</SPAN><SPAN class="string token">"{Binding ElementName=MyMapView, Path=Map.AllLayers}"</SPAN><SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>ItemsControl<SPAN class="punctuation token">.</SPAN>ItemTemplate<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>DataTemplate<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>Grid<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>Grid<SPAN class="punctuation token">.</SPAN>ColumnDefinitions<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>ColumnDefinition <SPAN class="operator token">/</SPAN><SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>ColumnDefinition MinWidth<SPAN class="operator token">=</SPAN><SPAN class="string token">"50"</SPAN> <SPAN class="operator token">/</SPAN><SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN><SPAN class="operator token">/</SPAN>Grid<SPAN class="punctuation token">.</SPAN>ColumnDefinitions<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>CheckBox IsChecked<SPAN class="operator token">=</SPAN><SPAN class="string token">"{Binding IsVisible, Mode=TwoWay}"</SPAN> Content<SPAN class="operator token">=</SPAN><SPAN class="string token">"{Binding Name}"</SPAN> <SPAN class="operator token">/</SPAN><SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN>Slider Value<SPAN class="operator token">=</SPAN><SPAN class="string token">"{Binding Opacity, Mode=TwoWay}"</SPAN> Minimum<SPAN class="operator token">=</SPAN><SPAN class="string token">"0"</SPAN> Maximum<SPAN class="operator token">=</SPAN><SPAN class="string token">"1"</SPAN> Grid<SPAN class="punctuation token">.</SPAN>Column<SPAN class="operator token">=</SPAN><SPAN class="string token">"1"</SPAN><SPAN class="operator token">/</SPAN><SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN><SPAN class="operator token">/</SPAN>Grid<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN><SPAN class="operator token">/</SPAN>DataTemplate<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN><SPAN class="operator token">/</SPAN>ItemsControl<SPAN class="punctuation token">.</SPAN>ItemTemplate<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN><SPAN class="operator token">/</SPAN>ItemsControl<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN><SPAN class="operator token">/</SPAN>StackPanel<SPAN class="operator token">></SPAN> <SPAN class="operator token"><</SPAN><SPAN class="operator token">/</SPAN>Grid<SPAN class="operator token">></SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
<SPAN class="keyword token">public</SPAN> <SPAN class="token function">MainWindow</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN> <SPAN class="token function">InitializeComponent</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> MyMapView<SPAN class="punctuation token">.</SPAN>Map <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Map</SPAN><SPAN class="punctuation token">(</SPAN>Basemap<SPAN class="punctuation token">.</SPAN><SPAN class="token function">CreateTopographic</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> MyMapView<SPAN class="punctuation token">.</SPAN>Map<SPAN class="punctuation token">.</SPAN>OperationalLayers<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Add</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">ArcGISMapImageLayer</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Uri</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fsampleserver6.arcgisonline.com%2Farcgis%2Frest%2Fservices%2FUSA%2FMapServer" target="_blank">http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer</A><SPAN>"</SPAN></SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> MyMapView<SPAN class="punctuation token">.</SPAN>Map<SPAN class="punctuation token">.</SPAN>OperationalLayers<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Add</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">FeatureLayer</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Uri</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fsampleserver6.arcgisonline.com%2Farcgis%2Frest%2Fservices%2FWildfire%2FFeatureServer%2F0" target="_blank">https://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer/0</A><SPAN>"</SPAN></SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN> Name <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Wildfire"</SPAN> <SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="punctuation token">}</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
We really want to encourage users to think of the Map as the model that gets bound to the MapView, rather than binding individual layers. For example:
<esri:MapView Map="{Binding Map}" />
You can then reuse that object to bind else where, like for instance:
<Checkbox IsVisible="{Binding Map.OperationalLayers[MyLayerID],Visible, Mode=TwoWay}" />
Jennifer,
I was able to use INotifyPropertyChanged instead of dependency properties. Thank you.
I have a wrapper class around esri Layer that was binding to the dependency properties in Layer. I think I can do something similar by forwarding the properties and listening to change notifications. I'll investigate.
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.