WPF нажал кнопку возвращает ноль - PullRequest
0 голосов
/ 20 января 2020

Я не знаю, почему мои нажатые кнопки возвращают 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;

Мое окно выглядит так:

App

Когда я перебираю кнопки в DataGrid, он выглядит следующим образом их в 2 раза больше, чем должно быть, и половина из них возвращает ноль.

Можете ли вы объяснить, почему он нулевой, и как я могу получить свойства нажатой кнопки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...