shuaib hasan Ansari Ответов: 1

Загрузите столбец таблицы данных в соответствии с предпочтениями пользователя в WPF


Кто-Нибудь Может Мне Помочь? Я хочу загрузить столбец в DataGrid Dymanically в соответствии с предпочтениями пользователя. Пользователь может указать порядок столбцов в текстовом файле. Затем в соответствии с этим мы показали столбец в таблице данных.

Моя таблица данных имеет некоторый контроль над столбцом, например выпадающий список, текстовое поле, флажок,

Я добавил свой пример кода, он работает нормально, но в моем требовании я должен загрузить столбец таблицы данных в соответствии с предпочтениями пользователя (не жестко закодированный, как я использую в настоящее время).мы можем использовать текстовый файл для настройки столбца, заголовок таблицы данных должен отображаться в соответствии с настройкой столбца в текстовом файле.

<datagrid

 grid.row="1" 

="" grid.column="0" grid.columnspan="3" margin="0,4,0,0" padding="0" horizontalalignment="Stretch" verticalalignment="Stretch" autogeneratecolumns="False" canuseraddrows="False" cellstyle="{StaticResource MetroDataGridCell}" columnheaderstyle="{StaticResource DefaultDataGridColumnHeader}" itemssource="{Binding SelectedContact.Recipients, Mode=TwoWay}" rowheaderstyle="{StaticResource MetroDataGridRowHeader}" rowstyle="{StaticResource MetroDataGridRow}" scrollviewer.cancontentscroll="false" scrollviewer.horizontalscrollbarvisibility="Auto" scrollviewer.verticalscrollbarvisibility="Auto">
  <datagrid.columns>
  <datagridtemplatecolumn header="{x:Static infrastructureLayer:Translations.IsDeleted}">
     <datagridtemplatecolumn.celltemplate>
       <datatemplate>
         <checkbox horizontalalignment="Center" ischecked="{Binding IsDeleted, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
       
     
  
<datagridtemplatecolumn header="{x:Static infrastructureLayer:Translations.WhatToSend}">
                                                        <datagridtemplatecolumn.celltemplate>
                                                            <datatemplate>
                                                                <combobox

 itemssource="{Binding DataContext.WhatToSendTypes, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}}" 

="" selectedvalue="{Binding WhatToSendInformationKey, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" selectedvaluepath="Identifier">
                                                            
                                                        
                                                    
<datagridtemplatecolumn header="{x:Static infrastructureLayer:Translations.OnlyIfSender}">
                                                        <datagridtemplatecolumn.celltemplate>
                                                            <datatemplate>
                                                                <checkbox horizontalalignment="Center" ischecked="{Binding IsApplicableOnlyIfContactSender, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                                                            
                                                        
                                                    
<datagridtemplatecolumn header="{x:Static infrastructureLayer:Translations.HowToSend}">
                                                        <datagridtemplatecolumn.celltemplate>
                                                            <datatemplate>
                                                                <combobox

 itemssource="{Binding DataContext.HowToSendTypes, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}}" 

="" selectedindex="0" selectedvalue="{Binding HowToSendInformationKey, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" selectedvaluepath="Identifier">
                                                            
                                                        
                                                    
<datagridtemplatecolumn header="{x:Static infrastructureLayer:Translations.ClientCode}">
                                                        <datagridtemplatecolumn.celltemplate>
                                                            <datatemplate>
                                                                <textbox isreadonly="True" text="{Binding Path=ClientCode, Mode=TwoWay}">
                                                            
                                                        
                                                    
DataGridTemplateColumn Header="{x:Static infrastructureLayer:Translations.ForAnotherClient}">
                                                        <datagridtemplatecolumn.celltemplate>
                                                            <datatemplate>
                                                                <textbox isreadonly="True" text="{Binding Path=InternalName, Mode=TwoWay}">
                                                            
                                                        
                                                    
<datagridtemplatecolumn header="{x:Static infrastructureLayer:Translations.Language}">
                                                        <datagridtemplatecolumn.celltemplate>
                                                            <datatemplate>
                                                                <combobox

 itemssource="{Binding DataContext.ReceipientLanguages, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}}" 

="" selectedindex="0" selectedvalue="{Binding LanguageKey, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" selectedvaluepath="Identifier">
                                                            
                                                        
                                                    
<datagridtemplatecolumn header="{x:Static infrastructureLayer:Translations.NameDisplay}">
                                                        <datagridtemplatecolumn.celltemplate>
                                                            <datatemplate>
                                                                <checkbox horizontalalignment="Center" ischecked="{Binding IsNameDisplay, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                                                            
                                                        
                                                    

                                                    <datagridtemplatecolumn header="{x:Static infrastructureLayer:Translations.AddressDisplay}">
                                                        <datagridtemplatecolumn.celltemplate>
                                                            <datatemplate>
                                                                <checkbox horizontalalignment="Center" ischecked="{Binding IsAddressDisplay, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">


Что я уже пробовал:

Пожалуйста, помогите мне в этом. Я не понимаю, как этого добиться

Gerry Schmitz

Загрузите все столбцы, а затем "спрячьте" те, которые им не нужны.

Maciej Los

Коротко И По Существу!