Есть DataGrid
, в ней несколько колонок, одна из них с Combobox
. Список для Combobox
подгружаю из внешнего файла. Все отображается, но никак не получается получить значение выбранного значения у Combobox. Как правильно это можно сделать. Стараюсь использовать MVVM.
Вот мой DataGrid
<DataGrid Name="MainDataGrid" Grid.Column="3" Grid.Row="3" ItemsSource="{Binding ParametersCollection}"
SelectedItem="{Binding SelectFile2, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Имя" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding GroupString}" Header="Группа" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Type}" Header="Тип" IsReadOnly="True"/>
<DataGridCheckBoxColumn Binding="{Binding DeleteCheckBox}" Header="Удаление" />
<DataGridCheckBoxColumn Binding="{Binding MigrateValueCheckBox}" Header="Перенос значения"/>
<DataGridTemplateColumn Header="Замена" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
HorizontalContentAlignment="Left"
ItemsSource="{Binding DataContext.FopParameterCollection, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" DisplayMemberPath="Name"
SelectedValue="{Binding }"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Категории">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="15"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="1" Content="..."
Command="{Binding DataContext.OpenCategoryCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding}"/>
<TextBlock Grid.Column="0" Text="{Binding CategoryCount, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Свойство ParametersCollection
public ObservableCollection<Parameter> ParametersCollection
{
get => _ParametersCollection;
set
{
_ParametersCollection = value;
OnPropertyChanged(nameof(ParametersCollection));
}
}
Класс Parameter
public class Parameter
{
public string Name { get; set; }
public Guid Guid { get; set; }
public string GroupString { get; set; }
public BuiltInParameterGroup BuiltInParameterGroup { get; set; }
public ParameterType Type { get; set; }
public IEnumerable<Category> EnumCategory { get; set; }
public bool DeleteCheckBox { get; set; }
public bool MigrateValueCheckBox { get; set; }
public Parameter GetFopParameter { get; set; }
public string CountCategory { get; set; }
public List<Category> FileCategoriesList { get; set; }
}
В итоге у меня получилось следующим образом
<DataGridComboBoxColumn Header="Заменить на" Width="*" DisplayMemberPath="Name" SelectedValueBinding="{Binding GetFopParameter}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource"
Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},
Path=DataContext.FopParameterCollection_MV, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource"
Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},
Path=DataContext.FopParameterCollection_MV, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
Собственно говоря как добавить поддержку форматаfb2 я пробовал добавить вот такой код в functions
Как отправить форму отзывов на почту + ошибку "Неверно введен e-mail!"?