private void AddCppFileTreeViewItem(ProjectInfo projectInfo, TreeViewItem parentTreeViewItem, SolutionHierarchy.Item item)
        {
            const string kExcludeFromUnityBuild = "Exclude from Unity Build";
            const string kIncludeInUnityBuild   = "Include in Unity Build";

            string cppFileName = item.Name;

            var treeViewItem = new TreeViewItem()
            {
                FontWeight = FontWeights.Normal
            };

            treeViewItem.DataContext = item;
            treeViewItem.ContextMenu = new ContextMenu();

            var checkBox = new CheckBox()
            {
                IsChecked         = !_solutionSettings.IsExcludedCppFileNameForProject(projectInfo, cppFileName),
                VerticalAlignment = VerticalAlignment.Center
            };

            var contextMenuItemExclude = new MenuItem()
            {
                Header = checkBox.IsChecked.Value ? kExcludeFromUnityBuild : kIncludeInUnityBuild,
            };

            contextMenuItemExclude.Click += (sender, eventArgs) =>
            {
                checkBox.IsChecked = !checkBox.IsChecked.Value;
            };
            treeViewItem.ContextMenu.Items.Add(contextMenuItemExclude);

            checkBox.Checked += (sender, eventArgs) =>
            {
                _solutionSettings.RemoveExcludedCppFileNameForProject(projectInfo, cppFileName);
                contextMenuItemExclude.Header = kExcludeFromUnityBuild;
            };
            checkBox.Unchecked += (sender, eventArgs) =>
            {
                _solutionSettings.ExcludeCppFileNameForProject(projectInfo, cppFileName);
                contextMenuItemExclude.Header = kIncludeInUnityBuild;
            };

            var image = new Image()
            {
                Source = _solutionHierarchy.GetIcon(SolutionHierarchy.IconType.CppFile)
            };
            var label = new Label()
            {
                Content = System.IO.Path.GetFileName(cppFileName)
            };

            var stack = new StackPanel()
            {
                Orientation = Orientation.Horizontal, Margin = new Thickness(0, -2, 0, -2)
            };

            stack.Children.Add(checkBox);
            stack.Children.Add(image);
            stack.Children.Add(label);
            treeViewItem.Header = stack;

            parentTreeViewItem.Items.Add(treeViewItem);
        }