Can someone please explain to me, in idiot-level detail, how you are supposed to use the Popup and PopupManager classes?
Popups are generally defined when creating your map, and defines how a feature should be displayed. Usually these are authored when publishing your webmap.
You can think of the PopupManager as the ViewModel for the popup+feature instance. It helps you generate the view of the popup, formatting values for view etc. For instance a simple way to render the popup fields can be done like this:
<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>ItemsControl</SPAN> <SPAN class="attr-name token">ItemsSource</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>{Binding DisplayedFields}<SPAN class="punctuation token">"</SPAN></SPAN><SPAN class="punctuation token">></SPAN></SPAN> <ItemsControl.ItemTemplate> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>DataTemplate</SPAN><SPAN class="punctuation token">></SPAN></SPAN> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>StackPanel</SPAN><SPAN class="punctuation token">></SPAN></SPAN> <TextBlock Text="{Binding Field.Label}" FontWeight="Bold"\ /> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>TextBox</SPAN> <SPAN class="attr-name token">IsEnabled</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>false<SPAN class="punctuation token">"</SPAN></SPAN> <SPAN class="attr-name token">Text</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>{Binding FormattedValue, Mode<SPAN class="punctuation token">=</SPAN>OneWay}<SPAN class="punctuation token">"</SPAN></SPAN> <SPAN class="attr-name token">BorderThickness</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>0<SPAN class="punctuation token">"</SPAN></SPAN> <SPAN class="punctuation token">/></SPAN></SPAN> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"></</SPAN>StackPanel</SPAN><SPAN class="punctuation token">></SPAN></SPAN> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"></</SPAN>DataTemplate</SPAN><SPAN class="punctuation token">></SPAN></SPAN> </ItemsControl.ItemTemplate> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"></</SPAN>ItemsControl</SPAN><SPAN class="punctuation token">></SPAN></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>
If you want to edit a feature, you could bind to the editable fields:
<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>ItemsControl</SPAN> <SPAN class="attr-name token">ItemsSource</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>{Binding EditableDisplayFields}<SPAN class="punctuation token">"</SPAN></SPAN><SPAN class="punctuation token">></SPAN></SPAN> <ItemsControl.ItemTemplate> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>DataTemplate</SPAN><SPAN class="punctuation token">></SPAN></SPAN> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>StackPanel</SPAN><SPAN class="punctuation token">></SPAN></SPAN> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>TextBlock</SPAN> <SPAN class="attr-name token">Text</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>{Binding Field.Label}<SPAN class="punctuation token">"</SPAN></SPAN> <SPAN class="attr-name token">FontWeight</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>Bold<SPAN class="punctuation token">"</SPAN></SPAN> <SPAN class="punctuation token">/></SPAN></SPAN> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>TextBox</SPAN> <SPAN class="attr-name token">Text</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>{Binding Value, Mode<SPAN class="punctuation token">=</SPAN>TwoWay}<SPAN class="punctuation token">"</SPAN></SPAN> <SPAN class="attr-name token">BorderBrush</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>Red<SPAN class="punctuation token">"</SPAN></SPAN><SPAN class="punctuation token">></SPAN></SPAN> <TextBox.Style> <SPAN class="language-css style token"><SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>Style</SPAN> <SPAN class="attr-name token">TargetType</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>TextBox<SPAN class="punctuation token">"</SPAN></SPAN><SPAN class="punctuation token">></SPAN></SPAN> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>Style.Triggers</SPAN><SPAN class="punctuation token">></SPAN></SPAN> <SPAN class="selector token"><DataTrigger Binding="</SPAN><SPAN class="punctuation token">{</SPAN>Binding ValidationError<SPAN class="punctuation token">}</SPAN><SPAN class="selector token">" Value="</SPAN><SPAN class="punctuation token">{</SPAN><SPAN class="property token">x</SPAN><SPAN class="punctuation token">:</SPAN>Null<SPAN class="punctuation token">}</SPAN>"> <Setter Property=<SPAN class="string token">"BorderBrush"</SPAN> Value=<SPAN class="string token">"Black"</SPAN> /> </DataTrigger> </Style.Triggers> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"></</SPAN>Style</SPAN><SPAN class="punctuation token">></SPAN></SPAN></SPAN> </TextBox.Style> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"></</SPAN>TextBox</SPAN><SPAN class="punctuation token">></SPAN></SPAN> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"></</SPAN>StackPanel</SPAN><SPAN class="punctuation token">></SPAN></SPAN> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"></</SPAN>DataTemplate</SPAN><SPAN class="punctuation token">></SPAN></SPAN> </ItemsControl.ItemTemplate> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"></</SPAN>ItemsControl</SPAN><SPAN class="punctuation token">></SPAN></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>
But how do we use the PopupManager to access PopupMedia and PopupExpressions?
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Jste tu noví? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.