0

Почему не выводится messagebox при клике на кнопку? Помогите пожалуйста

Вот так у меня выводится список услуг, и в каждой услуге есть кнопка "Редактировать" при нажатии на которую в текстбоксы должны заноситься данные услуги для их изменения

<ScrollViewer VerticalScrollBarVisibility="Auto" Margin="10,76,0,0" Width="403" HorizontalAlignment="Left">
        <ItemsControl Name="sevicesItems" Width="403">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="5,0,0,20" Height="130" Background="{x:Null}" Width="350" HorizontalAlignment="Left" VerticalAlignment="Top">
                        <Rectangle x:Name="rectangle" HorizontalAlignment="Left" Height="130" Stroke="Black" VerticalAlignment="Top" Width="350"/>
                        <Image HorizontalAlignment="Left" Height="121" Margin="9,6,0,0" VerticalAlignment="Top" Width="120" Source="{Binding Path=Главное_изображение}"/>
                        <Label x:Name="nameServiceLabel" HorizontalAlignment="Left" Margin="148,10,-16,0" VerticalAlignment="Top" Width="218" FontWeight="Bold">
                            <Label.Content>
                                <TextBlock TextWrapping="Wrap">
                                    <TextBlock.Text>
                                        <Binding Path="Наименование_услуги" />
                                    </TextBlock.Text>
                                </TextBlock>
                            </Label.Content>
                        </Label>
                        <Label x:Name="OldPriceServiceLabel" HorizontalAlignment="Left" Margin="148,45,-16,0" VerticalAlignment="Top" Width="218" FontWeight="Normal">
                            <Label.Content>
                                <TextBlock TextWrapping="Wrap" TextDecorations="Strikethrough">
                                    <TextBlock.Style>
                                        <Style>
                                            <Setter Property="TextBlock.Text" Value="{Binding Стоимость, StringFormat={}{0}}"/>
                                            <Style.Triggers>
                                                <DataTrigger Binding="{Binding Действующая_скидка}" Value="нет">
                                                    <Setter Property="TextBlock.Text" Value=""/>
                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </TextBlock.Style>
                                </TextBlock>
                            </Label.Content>
                        </Label>
                        <Label x:Name="priceServiceLabel" HorizontalAlignment="Left" Margin="175,45,-16,0" VerticalAlignment="Top" Width="218">
                            <Label.Content>
                                <TextBlock>
                                    <TextBlock.Style>
                                        <Style>
                                            <Setter Property="TextBlock.Text">
                                                <Setter.Value>
                                                    <MultiBinding StringFormat="{}{0} рублей за {1}">
                                                        <Binding Path="С_учётом_скидки"/>
                                                        <Binding Path="Длительность" />
                                                    </MultiBinding>
                                                </Setter.Value>
                                            </Setter>
                                            <Style.Triggers>
                                                <DataTrigger Binding="{Binding Действующая_скидка}" Value="нет">
                                                    <Setter Property="TextBlock.Text">
                                                        <Setter.Value>
                                                            <MultiBinding StringFormat="{}{0} рублей за {1}">
                                                                <Binding Path="Стоимость"/>
                                                                <Binding Path="Длительность" />
                                                            </MultiBinding>
                                                        </Setter.Value>
                                                    </Setter>
                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </TextBlock.Style>
                                </TextBlock>
                            </Label.Content>
                        </Label>
                        <Label x:Name="SaleServiceLabel" HorizontalAlignment="Left" Margin="148,70,-16,0" VerticalAlignment="Top" Width="218" FontWeight="Normal">
                            <Label.Content>
                                <TextBlock TextWrapping="Wrap">
                                    <TextBlock.Style>
                                        <Style>
                                            <Setter Property="TextBlock.Text" Value="{Binding Действующая_скидка, StringFormat={}* скидка {0}%}"/>
                                            <Style.Triggers>
                                                <DataTrigger Binding="{Binding Действующая_скидка}" Value="нет">
                                                    <Setter Property="TextBlock.Text" Value="Скидки нет"/>
                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </TextBlock.Style>
                                </TextBlock>
                            </Label.Content>
                        </Label>
                        <Button x:Name="editBtn" Content="Редактировать" HorizontalAlignment="Left" Margin="148,100,0,0" VerticalAlignment="Top" Width="100" Background="White" BorderBrush="#FFD6D6D6" Command="{Binding AddCommand}"/>
                        <Button x:Name="DeleteBtn" Content="Удалить" HorizontalAlignment="Left" Margin="253,100,0,0" VerticalAlignment="Top" Width="83" BorderBrush="#FFD6D6D6" Background="White"/>
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </ScrollViewer>

Это код модели самой

public class ServiceImport : INotifyPropertyChanged
{
    public string Наименование_услуги {
        get {return Наименование_услуги; }
        set
        {
            Наименование_услуги = value;
            OnPropertyChanged("Наименование_услуги");
        }
    }
    public string Главное_изображение { get; set; }
    public string Длительность { get; set; }
    public string Стоимость { get; set; }
    public string Действующая_скидка { get; set; }
    public int id { get; set; }
    public Nullable<int> С_учётом_скидки { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName]string prop = &quot;&quot;)
{
    if (PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(prop));
}

}

Код класса MainViewModel

public class ApplicationViewModel : INotifyPropertyChanged
{
    private ServiceImport selectedName;
    public ObservableCollection<ServiceImport> Services { get; set; }
// команда добавления нового объекта
private RelayCommand addCommand;
public RelayCommand AddCommand
{
    get
    {
        return addCommand ??
          (addCommand = new RelayCommand(obj =&gt;
          {
              //ServiceImport service = new ServiceImport();
              //Services.Insert(0, service);
              //SelectedName = service;
              MessageBox.Show(&quot;test&quot;);
          }));
    }
}

public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName]string prop = &quot;&quot;)
{
    if (PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(prop));
}

}

  • Мало данных. Давайте минимальный, самодостаточный пример и код не картинкой, а текстом. Сейчас вы просто кинули два не связанных друг с другом объекта и не понятно, где у вас эта кнопка, где класс, какой DataContext стоит и так далее. – EvgeniyZ Jul 26 '20 at 13:42
  • @EvgeniyZ готово – StellarLay Jul 26 '20 at 13:59
  • 2
  • @EvgeniyZ это я смотрел, но сейчас речь больше о кнопке идёт, когда я нажимаю на неё, должен открыться messagebox, но ничего не происходит – StellarLay Jul 26 '20 at 14:16
  • Ну так по ссылке все описано же. – EvgeniyZ Jul 26 '20 at 14:20
  • @EvgeniyZ я сделал как в том вопросе, всё равно ничего – StellarLay Jul 26 '20 at 14:24
  • Значит не так делаете. Поймите саму суть. У вас кнопка внутри списка, который задает свой DataContect, вам надо перейти на уровень выше, взять этот объект и обратиться к его DataContext.НужноеСвойство. – EvgeniyZ Jul 26 '20 at 14:27
  • Command="{Binding DataContext.AddCommand, RelativeSource={RelativeSource AncestorType=Window}}" – aepot Jul 26 '20 at 14:49
  • @EvgeniyZ понял – StellarLay Jul 26 '20 at 14:58
  • 1
    @aepot Спасибо большое, помогло – StellarLay Jul 26 '20 at 14:58
  • @aepot не подскажешь, почему он возвращает null? Когда хочу свойство в messagebox вывести в команде ServiceImport service = new ServiceImport(); MessageBox.Show(service.name.toString()); – StellarLay Jul 26 '20 at 15:23
  • Это уже другой вопрос. Если кратко, вы создаете новый объект service, и пытаетесь вывести его поле или свойство name. Как вы думаете, откуда там должно взяться то, что вы ожидаете увидеть? – aepot Jul 26 '20 at 15:31

0 Answers0