Загрузка столбца в сетке данных в соответствии с предпочтениями пользователя в WPF - PullRequest
0 голосов
/ 16 марта 2020

Может ли кто-нибудь мне помочь? Я хочу загрузить столбец в 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}" />
       </DataTemplate>
     </DataGridTemplateColumn.CellTemplate>
  </DataGridTemplateColumn>
<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" />
                                                            </DataTemplate>
                                                        </DataGridTemplateColumn.CellTemplate>
                                                    </DataGridTemplateColumn>
<DataGridTemplateColumn Header="{x:Static infrastructureLayer:Translations.OnlyIfSender}">
                                                        <DataGridTemplateColumn.CellTemplate>
                                                            <DataTemplate>
                                                                <CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsApplicableOnlyIfContactSender, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                                                            </DataTemplate>
                                                        </DataGridTemplateColumn.CellTemplate>
                                                    </DataGridTemplateColumn>
<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" />
                                                            </DataTemplate>
                                                        </DataGridTemplateColumn.CellTemplate>
                                                    </DataGridTemplateColumn>
<DataGridTemplateColumn Header="{x:Static infrastructureLayer:Translations.ClientCode}">
                                                        <DataGridTemplateColumn.CellTemplate>
                                                            <DataTemplate>
                                                                <TextBox IsReadOnly="True" Text="{Binding Path=ClientCode, Mode=TwoWay}" />
                                                            </DataTemplate>
                                                        </DataGridTemplateColumn.CellTemplate>
                                                    </DataGridTemplateColumn>
DataGridTemplateColumn Header="{x:Static infrastructureLayer:Translations.ForAnotherClient}">
                                                        <DataGridTemplateColumn.CellTemplate>
                                                            <DataTemplate>
                                                                <TextBox IsReadOnly="True" Text="{Binding Path=InternalName, Mode=TwoWay}" />
                                                            </DataTemplate>
                                                        </DataGridTemplateColumn.CellTemplate>
                                                    </DataGridTemplateColumn>
<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" />
                                                            </DataTemplate>
                                                        </DataGridTemplateColumn.CellTemplate>
                                                    </DataGridTemplateColumn>
<DataGridTemplateColumn Header="{x:Static infrastructureLayer:Translations.NameDisplay}">
                                                        <DataGridTemplateColumn.CellTemplate>
                                                            <DataTemplate>
                                                                <CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsNameDisplay, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                                                            </DataTemplate>
                                                        </DataGridTemplateColumn.CellTemplate>
                                                    </DataGridTemplateColumn>

                                                    <DataGridTemplateColumn Header="{x:Static infrastructureLayer:Translations.AddressDisplay}">
                                                        <DataGridTemplateColumn.CellTemplate>
                                                            <DataTemplate>
                                                                <CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsAddressDisplay, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                                                            </DataTemplate>
                                                        </DataGridTemplateColumn.CellTemplate>
                                                    </DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...