We do this by using a page selector widget property:
[EditingComponent(PageSelector.IDENTIFIER, Order = 1, Label = "Path location")]
public IList<PageSelectorItem> ItemsRootFolder { get; set; }
Then in the widget controller get the alias path for the selected node and use a path query as below to get any children:
var qry = DocumentHelper.GetDocuments()
.LatestVersion(LatestVersionEnabled)
.Published(!LatestVersionEnabled)
.Culture(PageCulture)
.CombineWithDefaultCulture()
.Path(aliasPath.ToString(), PathTypeEnum.Children)
.CheckPermissions(true);
I recommend using repositories within the widget controllers when doing data access