Я не знаю, почему мои нажатые кнопки возвращают NULL.
Вот мой XAML:
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.New" Executed="NewCommand_Execute" CanExecute="NewCommand_CanExecute"></CommandBinding>
</Window.CommandBindings>
<Grid Name="GridTypuZasilan">
<Grid.RowDefinitions>
<RowDefinition Name="Btn" Height="40"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<ItemsControl Grid.Row="1" Name="ItemControlTypZasilania" ItemsSource="{Binding TypyZasilania}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander Name="TypZasilaniaExp" Header="{Binding expHeader}" >
<Border Margin="3" BorderBrush="Black" BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="40"></RowDefinition>
</Grid.RowDefinitions>
<DataGrid Tag="{Binding dgTag}" Margin="5" CanUserAddRows="True" AutoGenerateColumns="False" Grid.Row="0">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Towar" ></DataGridTextColumn>
<DataGridTextColumn Width="*" Header="Ilość" ></DataGridTextColumn>
</DataGrid.Columns>
<RowDefinition></RowDefinition>
</DataGrid>
**<Button Name="BtnName" Tag="{Binding btnTag}" Content="Add something" Margin="5" Grid.Row="1">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="ApplicationCommands.New" ></i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>**
</Grid>
</Border>
</Expander>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
Я использую эту команду:
private void NewCommand_Execute(object sender, ExecutedRoutedEventArgs e)
{
if (sender as Button != null)
{
System.Windows.Forms.MessageBox.Show((sender as Button).Tag.ToString());
}
else
{
System.Windows.Forms.MessageBox.Show("Null");
}
}
и код, который создает представление:
TypyZasilania = new ObservableCollection<TypyZasilan.typZasilania>();
for (int i = 0; i < 5; i++)
{
TypZasilania = new TypyZasilan.typZasilania() { expHeader = "Expander_" + i, btnTag = "btn_TypZasilania_" + i, dgTag = "dg_TypZasilania_" + i };
TypyZasilania.Add(TypZasilania);
}
GridTypuZasilan.DataContext = this;
Мое окно выглядит так:
Когда я перебираю кнопки в DataGrid, он выглядит следующим образом их в 2 раза больше, чем должно быть, и половина из них возвращает ноль.
Можете ли вы объяснить, почему он нулевой, и как я могу получить свойства нажатой кнопки?