I borrowed steeled made up this.
It doesn't really work until you manually open the layer manager, so no help from me
//http://adndevblog.typepad.com/autocad/2012/06/use-layerfiltertree-to-add-a-new-layer-filter.html
[CommandMethod("NoXrefLayers")]
static public void NoXrefLayers()
{
Document doc = acadApp.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
bool bXref = false;
LayerFilterTree lft = db.LayerFilters;
LayerFilterCollection lfc = db.LayerFilters.Root.NestedFilters;
for (int i = 0; i < lfc.Count; ++i)
{
LayerFilter lf = lfc;
//ed.WriteMessage(Environment.NewLine + lf.FilterExpression);
if (lf.Name == "Xref") //only shows up if there is an xref
bXref = true;
else if (lf.Name == "no_xref_layers")
{
// make it current
LayerFilterTree lyrTree2 = new LayerFilterTree(lft.Root, lf);
lyrTree2.Root.GenerateNested();
db.LayerFilters = lyrTree2;
return;
}
}
if (!bXref) return;
LayerFilter lfXref = new LayerFilter();
lfXref.Name = "no_xref_layers";
lfXref.FilterExpression = "NAME==\"~*|*\"";
lft.Root.NestedFilters.Add(lfXref);
lft.Root.GenerateNested();
db.LayerFilters = new LayerFilterTree(lft.Root, lfXref);
}