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:
<ItemsControl ItemsSource="{Binding DisplayedFields}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Field.Label}" FontWeight="Bold"\ />
<TextBox IsEnabled="false" Text="{Binding FormattedValue, Mode=OneWay}" BorderThickness="0" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
If you want to edit a feature, you could bind to the editable fields:
<ItemsControl ItemsSource="{Binding EditableDisplayFields}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Field.Label}" FontWeight="Bold" />
<TextBox Text="{Binding Value, Mode=TwoWay}" BorderBrush="Red">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding ValidationError}" Value="{x:Null}">
<Setter Property="BorderBrush" Value="Black" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
But how do we use the PopupManager to access PopupMedia and PopupExpressions?