The DAX Studio solution is broken up into a number of different projects
Project | Entry Point | Description |
---|---|---|
ADOTabular | No | This is a wrapper over AdomdClient that gives a tabular abstraction (ie. Models/Tables/Columns) over the top of the |
DaxEditor | No | This is a wrapper project over AvalonEdit which customizes it for DAX Studio |
DaxStudio.Checker | Yes | This is a standalone project used for running environment checks on end user PCs. The primary use case for this utility is to help diagnosing issues with users PCs when DAX Studio fails to start. Once DAX Studio is up and running the normal diagnostic logging usually provides more actionable information. |
DaxStudio.Common | No | This contains various classes that are used between both the Excel Addin and Standalone projects |
DaxStudio.Controls.DataGridFilter | No | This project contains a custom WPF DataGrid Filter control |
DaxStudio.ExcelAddin | Yes | This project is the Excel addin used to enable connectivity to PowerPivot models. If you need to debug an issue with PowerPivot you should set this as your startup project in visual studio. |
DaxStudio.Interfaces | No | This project contains interfaces that are shared by two or more of the other projects |
DaxStudio.QueryTrace | No | This project contains the core query tracing engine |
DaxStudio.QueryTrace.Excel | No | This project contains the core query tracing engine used by the Excel Addin |
DaxStudio.Standalone | Yes | This project is the entry point for the standalone .exe version of DAX Studio. If you are debugging issues with anything other than PowerPivot models this project should be set as your startup project in Visual Studio |
DaxStudio.UI | No | This project contains all the User Interface objects |
UnitComboLib | No | This project contains the custom combo control that contains the zoom percentage control at the bottom of the Query editor |
This is the core project that contains all of the User Interface. It uses Caliburn.Micro to implement the MVVM pattern and is using MEF as a sort of light-weight IoC container.
- DaxStudio.Startup runs
static void Main()
in EntryPoint.cs, this sets up logging, creates a WPF and runs it - When the app from the previous step is run it creates an
AppBootstrapper
fromDaxStudio.UI\AppBootstrapper.cs
- This first runs the
Configure
method to setup the MEF container - Then the
OnStartup
method is called which creates aShellViewModel
object - The
ShellViewModel
then gets aRibbonViewModel
andStatusBarViewModel
from MEF - The
RibbonViewModel
then gets aDocumentTabViewModel
from MEF (this represents the collection of open documents) - The
DocumentTabViewModel
will then create a newDocumentViewModel
- The
DocumentViewModel
is the core part of the application, it will create a collection of toolwindows including:MetadataPaneViewModel
DmvPaneViewModel
FunctionPaneViewModel
OutputPaneViewModel
QueryHistoryPaneViewModel
QueryResultsPaneViewModel
- Once the
DocumentViewModel
has been created it will open and display aConnectionDialogViewModel