Может ли кто-нибудь мне помочь? Я хочу загрузить столбец в 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>