I tried the following sample:
xmlns:esri="http://schemas.esri.com/arcgis/client/2009">
<Grid x:Name="LayoutRoot" Background="White">
<esri:Map x:Name="MyMap" WrapAround="True" Extent="-19902659.740859,7433864.95979339,-13792567.5107708,10986668.962042">
<esri:ArcGISTiledMapServiceLayer ID="BaseLayer"
Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
<esri:FeatureLayer ID="Points"
Mode="OnDemand"
DisableClientCaching="True"
OnDemandCacheSize="0"
Url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/FeatureServer/0"
OutFields="*"/>
</esri:Map>
<Button Content="update" Click="Button_Click"
VerticalAlignment="Top" HorizontalAlignment="Center"/>
</Grid>
private void Button_Click(object sender, RoutedEventArgs e)
{
var l = MyMap.Layers["Points"] as FeatureLayer;
l.Update();
}
On Map.ExtentChanged, a query with where clause objectid NOT IN (<objectIDs in current extent>) is sent. If I click on button, features for current map extent is retrieved again (no NOT IN query). I assume you want to call FeatureLayer.Update()?