<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work in .NET Maps SDK Questions</title>
    <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1257745#M11676</link>
    <description>&lt;P&gt;Thank you Viktor for the reproducer. Upon debugging, we realized when&amp;nbsp;two basemaps both have a null URI, BasemapGalleryItem.EqualsBasemap&amp;nbsp;would return true. Different basemaps can both have null URI's, as in your case (despite providing the URI for the VectorTiledLayer). It should be returning false. This has been patched in .NET toolkit repo.&amp;nbsp;&lt;/P&gt;&lt;P&gt;As for the issue with basemap gallery items not displaying without workaround - we are unsure what is causing this:&amp;nbsp;&lt;A href="https://github.com/Esri/arcgis-maps-sdk-dotnet-toolkit/issues/487" target="_blank"&gt;BasemapGallery.AvailableBasemaps items not displaying after object instantiation · Issue #487 · Esri/arcgis-maps-sdk-dotnet-toolkit (github.com)&lt;/A&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 13 Feb 2023 22:37:32 GMT</pubDate>
    <dc:creator>williambohrmann3</dc:creator>
    <dc:date>2023-02-13T22:37:32Z</dc:date>
    <item>
      <title>esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1254306#M11639</link>
      <description>&lt;P&gt;I have got a WPF MVVM app where I have a MapView, and the BasemapGallery from the toolkit:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;        &amp;lt;esri:MapView 
            x:Name="MainMapView" 
            Map="{Binding Map}"
            /&amp;gt;

        &amp;lt;esritoolkit:BasemapGallery
            x:Name="BasemapGallery"   
            GeoModel="{Binding ElementName=MainMapView, Path=Map}"
            AvailableBasemaps="{Binding AvailableBasemaps}"/&amp;gt;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The Map property on the VM:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;private Map _map;
public Map Map
{
	get { return _map; }
	set { SetProperty(ref _map, value); }
}


// initialized in VM constructor
Map = new Map
{
	InitialViewpoint = new Viewpoint(new MapPoint(X, Y, spatialReference: SpatialReference.Create(3857)), 130617),
	Basemap = new Basemap(BasemapStyle.ArcGISTopographic)
};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Changing the mapview's base map from the gallery works fine. The gallery loads base maps from AGOL which is something I would like to override. The app will be on an offline device so I have some map packages locally but I am currently testing with a&amp;nbsp;VectorTileServer base map:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="c"&gt;var vectorTiledLayer = new ArcGISVectorTiledLayer(new Uri("https://server/arcgis/rest/services/MyService/VectorTileServer"));
var newBaseMap = new Basemap(vectorTiledLayer)
var item = await BasemapGalleryItem.CreateAsync(newBaseMap);
AvailableBasemaps = new List&amp;lt;BasemapGalleryItem&amp;gt;();
AvailableBasemaps.Add(item);


// where AvailableBasemaps is:
private IList&amp;lt;BasemapGalleryItem&amp;gt; _availableBasemaps;
public IList&amp;lt;BasemapGalleryItem&amp;gt; AvailableBasemaps
{
	get { return _availableBasemaps; }
	set { SetProperty(ref _availableBasemaps, value); }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The gallery is still showing the AGOL base maps, and not at all my custom base map.&lt;/P&gt;&lt;P&gt;What am I doing wrong?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Esri.ArcGISRuntime.WPF v100.15.0&lt;/P&gt;&lt;P&gt;Esri.ArcGISRuntime.Toolkit v100.15.0&lt;/P&gt;</description>
      <pubDate>Thu, 02 Feb 2023 14:21:10 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1254306#M11639</guid>
      <dc:creator>ViktorSafar</dc:creator>
      <dc:date>2023-02-02T14:21:10Z</dc:date>
    </item>
    <item>
      <title>Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1254715#M11650</link>
      <description>&lt;P&gt;Hello Viktor, we are investigating. A workaround would be to call BasemapGallery.AvailableBasemaps.Clear() which'll remove all the AGOL basemaps. Then, call&amp;nbsp;BasemapGallery.AvailableBasemaps.Add(await BasemapGalleryItem.CreateAsync(basemap)) to add your custom basemap. Currently, we've found that instantiating a new List or ObservableCollection object and setting it to&amp;nbsp;BasemapGallery.AvailableBasemaps will not visually update the toolkit component unless you do this twice. We should be logging this bug in the toolkit repo.&lt;/P&gt;</description>
      <pubDate>Fri, 03 Feb 2023 01:41:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1254715#M11650</guid>
      <dc:creator>williambohrmann3</dc:creator>
      <dc:date>2023-02-03T01:41:18Z</dc:date>
    </item>
    <item>
      <title>Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1254752#M11651</link>
      <description>&lt;P&gt;Thanks William. I put the logic in the code behind the button click - and it kinda works. Just that my basemap becomes disabled when it loads. Any ideas why?&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ViktorSafar_1-1675411966580.gif" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/62023i5FFCBA10DF91BE51/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ViktorSafar_1-1675411966580.gif" alt="ViktorSafar_1-1675411966580.gif" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ViktorSafar_2-1675412439551.png" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/62024i1914E98844C285DD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ViktorSafar_2-1675412439551.png" alt="ViktorSafar_2-1675412439551.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;private bool _ownBaseMapsAdded = false;
private void ButtonBasemap_Click(object sender, System.Windows.RoutedEventArgs e)
{
	if (BasemapGallery.Visibility == System.Windows.Visibility.Visible)
	{
		BasemapGallery.Visibility = System.Windows.Visibility.Hidden;
	}
	else
	{
		// workaround https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/td-p/1254306
		if (!_ownBaseMapsAdded)
		{
			var existingBms = new List&amp;lt;BasemapGalleryItem&amp;gt;(BasemapGallery.AvailableBasemaps);
			BasemapGallery.AvailableBasemaps.Clear();
			BasemapGallery.AvailableBasemaps.AddRange(((MainMapVM)DataContext).AvailableBasemaps);
			BasemapGallery.AvailableBasemaps.AddRange(existingBms);
			_ownBaseMapsAdded = true;
		}

		BasemapGallery.Visibility = System.Windows.Visibility.Visible;
	}
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 03 Feb 2023 08:21:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1254752#M11651</guid>
      <dc:creator>ViktorSafar</dc:creator>
      <dc:date>2023-02-03T08:21:06Z</dc:date>
    </item>
    <item>
      <title>Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1255037#M11657</link>
      <description>&lt;P&gt;Does your MapView and custom basemap have the same spatial reference? If not, it could be violating a design requirement for BasemapGallery. Also, are you using .net 6 or .net framework?&lt;/P&gt;</description>
      <pubDate>Fri, 03 Feb 2023 21:02:30 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1255037#M11657</guid>
      <dc:creator>williambohrmann3</dc:creator>
      <dc:date>2023-02-03T21:02:30Z</dc:date>
    </item>
    <item>
      <title>Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1255274#M11658</link>
      <description>&lt;P&gt;I am on net6.&lt;/P&gt;&lt;P&gt;Thanks, the problem was the spatial reference of the MapView, I now instantiate the map with a specific SR&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;var spatialRef = SpatialReference.Create(_configuration.GetValue&amp;lt;int&amp;gt;("SpatialReference"));
Map = new Map(spatialRef); // 25833&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have managed to set 2 of my own maps (both with SR 25833) into the gallery. But they do not switch the basemap:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ViktorSafar_0-1675683367512.gif" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/62151i9A46E6376BEFC9A8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ViktorSafar_0-1675683367512.gif" alt="ViktorSafar_0-1675683367512.gif" /&gt;&lt;/span&gt;and&amp;nbsp;&lt;/P&gt;&lt;P&gt;I load the list of basemaps, then assign the 1st one to the Map.Basemap, and then set the list as&amp;nbsp;AvailableBasemaps for the gallery.&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;var availableBasemaps = new ObservableCollection&amp;lt;BasemapGalleryItem&amp;gt;();
var appBasemaps = await _layerProvider.GetAppBasemaps(online: true);

Map.Basemap = appBasemaps.First().Basemap;

foreach (var bm in appBasemaps)
{
	var item = await BasemapGalleryItem.CreateAsync(bm.Basemap);                
    var location = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, bm.MapFileConfig.Thumbnail);
	var bytes = await File.ReadAllBytesAsync(location);
	item.Thumbnail = new Esri.ArcGISRuntime.UI.RuntimeImage(bytes);
    availableBasemaps.Add(item);
}

AvailableBasemaps = availableBasemaps;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;where AppBasemap is just a wrapper for Esri's Basemap and a config&lt;/P&gt;&lt;LI-CODE lang="c"&gt;public class AppBasemap
{
    public Basemap Basemap { get; set; }
    public MapFileConfig MapFileConfig { get; set; }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To reiterate, the gallery is connected to the MapView in XAML:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;        &amp;lt;esri:MapView 
            x:Name="MainMapView" 
            Map="{Binding Map}"
            /&amp;gt;

            &amp;lt;esritoolkit:BasemapGallery
                x:Name="BasemapGallery"     
                GeoModel="{Binding ElementName=MainMapView, Path=Map}"                
                /&amp;gt;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and the code that adds my custom basemaps to the gallery:&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;private bool _ownBaseMapsAdded = false;
private void ButtonBasemap_Click(object sender, System.Windows.RoutedEventArgs e)
{
	if (BasemapGallery.Visibility == System.Windows.Visibility.Visible)
	{
		BasemapGallery.Visibility = System.Windows.Visibility.Hidden;
	}
	else
	{
		// workaround https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/td-p/1254306
		if (!_ownBaseMapsAdded)
		{
			BasemapGallery.AvailableBasemaps.Clear();
			BasemapGallery.AvailableBasemaps.AddRange(((MainMapVM)DataContext).AvailableBasemaps);			
			_ownBaseMapsAdded = true;
		}

		BasemapGallery.Visibility = System.Windows.Visibility.Visible;
	}
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Feb 2023 11:47:05 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1255274#M11658</guid>
      <dc:creator>ViktorSafar</dc:creator>
      <dc:date>2023-02-06T11:47:05Z</dc:date>
    </item>
    <item>
      <title>Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1255498#M11660</link>
      <description>&lt;P&gt;Could you check if the second basemap is equal to the first basemap (not talking gallery items)? I see they have different thumbnails which indicates to me that they are different gallery items. Also, I'd try to set the names of both basemap items.&lt;/P&gt;</description>
      <pubDate>Mon, 06 Feb 2023 20:52:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1255498#M11660</guid>
      <dc:creator>williambohrmann3</dc:creator>
      <dc:date>2023-02-06T20:52:01Z</dc:date>
    </item>
    <item>
      <title>Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1255611#M11663</link>
      <description>&lt;P&gt;The basemaps are not equal, the basemap names are set before it reaches the foreach where it creates the gallery items:&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;appBasemaps[0].Basemap == appBasemaps[1].Basemap
false
appBasemaps[0].Basemap.Name
"Gråtone Vector"
appBasemaps[1].Basemap.Name
"Kyst Vector"&lt;/LI-CODE&gt;&lt;P&gt;the basemap looks like this&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;bm.Basemap
{Esri.ArcGISRuntime.Mapping.Basemap}
    ApiKey: ""
    BaseLayers: {Esri.ArcGISRuntime.Mapping.LayerCollection}
    Credential: null
    Item: null
    LoadError: null
    LoadStatus: Loaded
    Name: "Gråtone Vector"
    ReferenceLayers: {Esri.ArcGISRuntime.Mapping.LayerCollection}
    Uri: null&lt;/LI-CODE&gt;&lt;P&gt;where the BaseLayers contains 1 item:&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;bm.Basemap.BaseLayers.First()
{Esri.ArcGISRuntime.Mapping.ArcGISVectorTiledLayer}
    ApiKey: ""
    Attribution: "Kartverket, Geovekst, Kommuner, Corine og OSM - Geodata AS"
    CanChangeVisibility: true
    Credential: null
    Description: ""
    FullExtent: {Envelope[XMin=-4148199.2834, YMin=3127527.3873999994, XMax=3555318.5901999995, YMax=9533260.227400001, Wkid=25833]}
    Id: ""
    IsIdentifyEnabled: false
    IsVisible: true
    Item: null
    ItemResourceCache: null
    LoadError: null
    LoadStatus: Loaded
    MaxScale: 625
    MinScale: 40960000
    Name: "GeocacheGraatoneVector"
    Opacity: 1
    ShowInLegend: true
    Source: {file:///C:/temp/poc/GeocacheGraatoneVector.vtpk}
    SourceInfo: {Esri.ArcGISRuntime.ArcGISServices.VectorTileSourceInfo}
    SpatialReference: {SpatialReference[Wkid=25833]}
    Style: {Esri.ArcGISRuntime.Mapping.VectorTileStyle}
    SublayerContents: {Esri.ArcGISRuntime.Internal.SublayerContentCollection}
    VectorTileCache: {Esri.ArcGISRuntime.Mapping.VectorTileCache}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and the gallery item inherits the name of the basemap as soon as the item is created (the following is from the immediate window from the line &lt;EM&gt;availableBasemaps.Add(item);&lt;/EM&gt;&amp;nbsp;in the foreach cycle).&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;item
{Esri.ArcGISRuntime.Toolkit.UI.BasemapGalleryItem}
    Basemap: {Esri.ArcGISRuntime.Mapping.Basemap}
    IsLoading: false
    IsLoadingThumbnail: false
    IsValid: true
    Name: "Gråtone Vector"
    SpatialReference: null
    Thumbnail: {Esri.ArcGISRuntime.UI.RuntimeImage}
    ThumbnailData: {byte[17448]}
    Tooltip: "Gråtone Vector"
item
{Esri.ArcGISRuntime.Toolkit.UI.BasemapGalleryItem}
    Basemap: {Esri.ArcGISRuntime.Mapping.Basemap}
    IsLoading: false
    IsLoadingThumbnail: false
    IsValid: true
    Name: "Kyst Vector"
    SpatialReference: null
    Thumbnail: {Esri.ArcGISRuntime.UI.RuntimeImage}
    ThumbnailData: {byte[25556]}
    Tooltip: "Kyst Vector"&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Feb 2023 07:46:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1255611#M11663</guid>
      <dc:creator>ViktorSafar</dc:creator>
      <dc:date>2023-02-07T07:46:47Z</dc:date>
    </item>
    <item>
      <title>Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1255948#M11671</link>
      <description>&lt;P&gt;Are you able to provide a smaller reproducer that demonstrates the problem? I'd like to debug and see if the IsLoading flag is set to true to see if its a LoadAsync() issue.&lt;/P&gt;</description>
      <pubDate>Tue, 07 Feb 2023 23:13:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1255948#M11671</guid>
      <dc:creator>williambohrmann3</dc:creator>
      <dc:date>2023-02-07T23:13:45Z</dc:date>
    </item>
    <item>
      <title>Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1256251#M11673</link>
      <description>&lt;P&gt;Here it is&amp;nbsp;&lt;A href="https://github.com/safarviktor/BasemapGallery.Bug" target="_blank"&gt;https://github.com/safarviktor/BasemapGallery.Bug&lt;/A&gt;&lt;/P&gt;&lt;P&gt;The 2 vector tile services that are hardcoded are open to public.&lt;/P&gt;&lt;P&gt;I found something potentially important. The gallery will switch the map to the 1st selected basemap after the&amp;nbsp;AvailableBasemaps property of the gallery is updated, but not any subsequent ones:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ViktorSafar_0-1675885937644.gif" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/62392i4F35E00AFD575BB7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ViktorSafar_0-1675885937644.gif" alt="ViktorSafar_0-1675885937644.gif" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Feb 2023 19:55:50 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1256251#M11673</guid>
      <dc:creator>ViktorSafar</dc:creator>
      <dc:date>2023-02-08T19:55:50Z</dc:date>
    </item>
    <item>
      <title>Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1257745#M11676</link>
      <description>&lt;P&gt;Thank you Viktor for the reproducer. Upon debugging, we realized when&amp;nbsp;two basemaps both have a null URI, BasemapGalleryItem.EqualsBasemap&amp;nbsp;would return true. Different basemaps can both have null URI's, as in your case (despite providing the URI for the VectorTiledLayer). It should be returning false. This has been patched in .NET toolkit repo.&amp;nbsp;&lt;/P&gt;&lt;P&gt;As for the issue with basemap gallery items not displaying without workaround - we are unsure what is causing this:&amp;nbsp;&lt;A href="https://github.com/Esri/arcgis-maps-sdk-dotnet-toolkit/issues/487" target="_blank"&gt;BasemapGallery.AvailableBasemaps items not displaying after object instantiation · Issue #487 · Esri/arcgis-maps-sdk-dotnet-toolkit (github.com)&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Feb 2023 22:37:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1257745#M11676</guid>
      <dc:creator>williambohrmann3</dc:creator>
      <dc:date>2023-02-13T22:37:32Z</dc:date>
    </item>
    <item>
      <title>Re: esritoolkit:BasemapGallery - AvailableBasemaps customization does not work</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1257914#M11678</link>
      <description>&lt;P&gt;If anyone's using Prism, there is a dead simple way to make your own gallery&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;XAML:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;&amp;lt;UserControl x:Class="MapGallery.MapGalleryUC"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:prism="http://prismlibrary.com/"             
             prism:ViewModelLocator.AutoWireViewModel="True"&amp;gt;
    &amp;lt;ListView
        ItemsSource="{Binding AvailableMaps}"
        SelectedValue="{Binding SelectedMap}"        
        &amp;gt;
        &amp;lt;ListView.ItemTemplate&amp;gt;
            &amp;lt;DataTemplate&amp;gt;
                &amp;lt;WrapPanel&amp;gt;
                    &amp;lt;Image Source="{Binding Thumbnail}" Height="100" Width="100" /&amp;gt;
                    &amp;lt;Label Content="{Binding Basemap.Name}" VerticalContentAlignment="Center"/&amp;gt;
                &amp;lt;/WrapPanel&amp;gt;
            &amp;lt;/DataTemplate&amp;gt;
        &amp;lt;/ListView.ItemTemplate&amp;gt;
    &amp;lt;/ListView&amp;gt;
&amp;lt;/UserControl&amp;gt;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;VM:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;internal class MapGalleryVM : BindableBase
{
	private readonly IEventAggregator _eventAggregator;

	public MapGalleryVM(IEventAggregator eventAggregator)
	{
		_eventAggregator = eventAggregator;
		_eventAggregator.GetEvent&amp;lt;BasemapsLoadedEvent&amp;gt;().Subscribe(HandleBasemapsLoadedEvent);
	}

	private void HandleBasemapsLoadedEvent(List&amp;lt;AppBasemap&amp;gt; appMaps)
	{
		var results = appMaps.Select(x =&amp;gt; new MapGalleryModel()
		{
			Basemap = x.Basemap,
			Thumbnail = new BitmapImage(new System.Uri(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, x.MapFileConfig.Thumbnail)))
		});

		_ = Application.Current.Dispatcher.BeginInvoke(() =&amp;gt;
		{
			AvailableMaps = new ObservableCollection&amp;lt;MapGalleryModel&amp;gt;(results);
		});
	}

	private ObservableCollection&amp;lt;MapGalleryModel&amp;gt; _availableMaps;
	public ObservableCollection&amp;lt;MapGalleryModel&amp;gt; AvailableMaps
	{
		get { return _availableMaps; }
		set { SetProperty(ref _availableMaps, value); }
	}


	private MapGalleryModel _selectedMap;
	public MapGalleryModel SelectedMap
	{
		get { return _selectedMap; }
		set 
		{ 
			if (value != SelectedMap)
			{
				SetProperty(ref _selectedMap, value);
				_eventAggregator.GetEvent&amp;lt;BasemapChangedEvent&amp;gt;().Publish(value.Basemap);
			}
		}
	}
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The events&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="c"&gt;internal class BasemapChangedEvent : PubSubEvent&amp;lt;Basemap&amp;gt;
{
}

internal class BasemapsLoadedEvent: PubSubEvent&amp;lt;List&amp;lt;AppBasemap&amp;gt;&amp;gt;
{
}

public class AppBasemap
{
	public Basemap Basemap { get; set; }
	public MapFileConfig MapFileConfig { get; set; }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;where&amp;nbsp;MapFileConfig is just a holder for paths to the maps and thumbnails.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And wherever you handle your Map:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;internal class MainMapVM : BindableBase
{
	public MainMapVM(IEventAggregator eventAggregator)
	{
		_eventAggregator.GetEvent&amp;lt;BasemapChangedEvent&amp;gt;().Subscribe(HandleBasemapChangedEvent);
		LoadBasemaps().Await();
	}

 
	private void HandleBasemapChangedEvent(Basemap obj)
	{
		Map.Basemap = obj;
	}

	private async Task LoadBasemaps()
	{
		var appBasemaps = await _layerProvider.GetAppBasemaps(_isOnline);

		Map.Basemap = appBasemaps.First().Basemap;			
		_eventAggregator.GetEvent&amp;lt;BasemapsLoadedEvent&amp;gt;().Publish(appBasemaps);
	}

	private Map _map;
	public Map Map
	{
		get { return _map; }
		set { SetProperty(ref _map, value); }
	}
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Feb 2023 14:01:14 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/esritoolkit-basemapgallery-availablebasemaps/m-p/1257914#M11678</guid>
      <dc:creator>ViktorSafar</dc:creator>
      <dc:date>2023-02-15T14:01:14Z</dc:date>
    </item>
  </channel>
</rss>

