В первом окне я выбираю какая команда должна быть у моей кнопки, а в открывшемся окне я уже получаю кнопку, но при нажатии ничего не происходит.
У меня есть кнопки в ItemsControl, которые открывают разные окна, в зависимости от команды. Все команды лежат в ObservableCollection. Как мне правильно добавить эти команды к моим кнопкам в VM, чтобы к каждой кнопке была привязана именно ее команда?
Я пытался сделать как-то так, но тогда идет привязка только одной команды. Совершенно не могу понять как привязать для каждой кнопки свою команду.
public RelayCommand AddCommand => calculationDesignModel.InputList[0].AddCommand;
CalculationDesignModel
#region Variables
private string titleOutVariable;
private string designationOutVariable;
private string unitOutVariable;
private string typeOutVariable;
private string titleInVariable;
private string designationInVariable;
private string unitInVariable;
private string typeInVariable;
private int quantityInputList;
private int indexInputItem;
private string valueInVariable;
private string imageFileName;
private string resultFormula;
private string result;
private string formula;
private bool calculateRadioButton;
private string buttonContent;
private string titleAddCalculate;
private ObservableCollection<CalculationDesignModel> inputList = new ObservableCollection<CalculationDesignModel>();
private RelayCommand addCommand;
#endregion
#region Properties
public int Id { get; set; }
public string TitleOutVariable { get => titleOutVariable; set => titleOutVariable = value; }
public string DesignationOutVariable { get => designationOutVariable; set => designationOutVariable = value; }
public string UnitOutVariable { get => unitOutVariable; set => unitOutVariable = value; }
public string TypeOutVariable { get => typeOutVariable; set => typeOutVariable = value; }
public string Formula { get => formula; set => formula = value; }
public string TitleInVariable { get => titleInVariable; set => titleInVariable = value; }
public string DesignationInVariable { get => designationInVariable; set => designationInVariable = value; }
public string UnitInVariable { get => unitInVariable; set => unitInVariable = value; }
public string TypeInVariable { get => typeInVariable; set => typeInVariable = value; }
public int QuantityInputList { get => quantityInputList; set => quantityInputList = value; }
public int IndexInputItem { get => indexInputItem; set => indexInputItem = value; }
public string ValueInVariable
{
get => valueInVariable;
set
{
valueInVariable = value;
OnPropertyChanged("ValueInVariable");
}
}
public string ResultFormula { get => resultFormula; set => resultFormula = value; }
public string ImageFileName { get => imageFileName; set => imageFileName = value; }
public string Result { get => result; set => result = value; }
public ObservableCollection<CalculationDesignModel> InputList { get => inputList; set => inputList = value; }
public bool CalculateRadioButton { get => calculateRadioButton; set => calculateRadioButton = value; }
public string ButtonContent { get => buttonContent; set => buttonContent = value; }
public string TitleAddCalculate { get => titleAddCalculate; set => titleAddCalculate = value; }
public RelayCommand AddCommand
{
get => addCommand;
set
{
addCommand = value;
OnPropertyChanged("AddCommand");
}
}
<ItemsControl AlternationCount="100" ItemsSource="{Binding InputList}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Tag="{Binding AddCommand, UpdateSourceTrigger=PropertyChanged}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Margin="15 5" HorizontalAlignment="Left" VerticalAlignment="Center" Style="{StaticResource MaterialDesignSubheadingTextBlock}" Text="{Binding TitleInVariable, UpdateSourceTrigger=PropertyChanged}"/>
<Button Grid.Column="1" Grid.Row="0" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="{Binding CalculateRadioButton}" Content="{Binding ButtonContent}" Command="{Binding Tag,
RelativeSource={RelativeSource FindAncestor,
AncestorType=ItemsControl}}"/>
<!--<TextBlock Grid.Column="3" Grid.Row="0" Text="{Binding Path=(ItemsControl.AlternationIndex),RelativeSource={RelativeSource TemplatedParent}}"/> -->
<TextBox Grid.Column="2" Grid.Row="0" Margin="15" HorizontalAlignment="Stretch" VerticalAlignment="Center" Text="{Binding ValueInVariable, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
<TextBlock Grid.Column="3" Grid.Row="0" Margin="15 5" HorizontalAlignment="Left" VerticalAlignment="Center" Style="{StaticResource MaterialDesignSubheadingTextBlock}" Text="{Binding UnitInVariable}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Мне нужно добавить команды для этой кнопки.
<Button Grid.Column="1" Grid.Row="0" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="{Binding CalculateRadioButton}" Content="{Binding ButtonContent}" Command="{Binding Tag,
RelativeSource={RelativeSource FindAncestor,
AncestorType=ItemsControl}}"/>
Прошу, приведите пример правильного присвоения команды для Button в ItemsControl
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Имеется сервис, который собирает данные и отправляет в другой сервисСервис работает в докер-контейнере
Необходимо создать два поля формы, чтобы в одно поле ввести, например, 1000 строк и во второе поле 1000 строк, нажать на кнопку "Выполнить"
Какой самый быстрый способ импортировать файл CSV в базу данных кроме COPYДанных очень много, около 125 млн записей