Ejemplo n.º 1
0
        public void AddColumn(string lcid)
        {
            Language language = DataModel.GetLanguageByLcid(lcid);

            if (language != null)
            {
                dataGrid.Columns.Add(new DataGridTextColumn
                {
                    Header  = language.DisplayName,
                    Binding = new Binding(lcid)
                });

                language.IsSelected = true;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initializes the datagrid columns and sets the ItemsSource to the default collection.
        /// </summary>
        private void InitializeDataGrid()
        {
            List <string> cultures = DataModel.CultureNames;

            /// Create some setters and triggers for the
            /// styles of the read-only columns.
            ///
            Trigger iIsSelectedTrigger = new Trigger()
            {
                Property = DataGridTextColumn.IsReadOnlyProperty,
                Value    = true
            };

            var foregroundSetter = new Setter(DataGridCell.ForegroundProperty, new SolidColorBrush(Colors.Black));

            iIsSelectedTrigger.Setters.Add(foregroundSetter);

            var backgroundSetter = new Setter(DataGridCell.BackgroundProperty, new SolidColorBrush(Colors.LightGray));

            /// The first column is for the metadata container object.
            ///
            var objectColumnStyle = new Style(typeof(DataGridCell));

            objectColumnStyle.Setters.Add(backgroundSetter);
            objectColumnStyle.Setters.Add(foregroundSetter);
            objectColumnStyle.Triggers.Add(iIsSelectedTrigger);
            dataGrid.Columns.Add(new DataGridTextColumn
            {
                Header     = FindResource("TabularObjectColumnHeader").ToString(),
                Binding    = new Binding(DataModel.ContainerColumnHeader),
                IsReadOnly = true,
                CellStyle  = objectColumnStyle
            });

            /// The second column is for the default culture of the data model,
            /// which is always the first language in the list of data model cultures.
            ///
            var defaultLangColumnStyle = new Style(typeof(DataGridCell));

            defaultLangColumnStyle.Setters.Add(foregroundSetter);
            defaultLangColumnStyle.Triggers.Add(iIsSelectedTrigger);

            /// Add a tooltip to flag that the default culture is readonly.
            ///
            var objectHeaderStyle = new Style(typeof(DataGridColumnHeader));

            objectHeaderStyle.Setters.Add(new Setter(ToolTipService.ToolTipProperty,
                                                     FindResource("DefaultCultureColumnHeaderToolTip").ToString()));

            Language defaultLang = DataModel.GetLanguageByLcid(cultures[0]);

            dataGrid.Columns.Add(new DataGridTextColumn
            {
                Header      = $"{defaultLang.DisplayName}*",
                HeaderStyle = objectHeaderStyle,
                Binding     = new Binding(cultures[0]),
                IsReadOnly  = true,
                CellStyle   = defaultLangColumnStyle
            });
            DataModel.SetLanguageFlags(cultures[0], true, true);


            /// Add the remaining languages that already exist in the data model
            /// and mark them as selected in the list of supported languages.
            ///
            for (int i = 1; i < cultures.Count; i++)
            {
                AddColumn(cultures[i]);
            }

            /// And set Captions as the default content of the datagrid.
            dataGrid.ItemsSource = DataModel.Captions;
        }