Как говорит ошибка, конструктор RoutedEventHandler
ожидает имя метода с определенной подписью .
. Вы можете попробовать добавить mangaName
к свойству Tag
imagesGrid
, а затем получить его в методе SetMargin
. Кроме того, SetMargin
должен иметь указанную c подпись, чтобы он работал как RoutedEventHandler
.
Измените это:
imagesGrid.ColumnDefinitions[1].Loaded += new RoutedEventHandler( SetMargin(mangaName, imagesGrid) );
на это:
imagesGrid.Tag = mangaName;
imagesGrid.ColumnDefinitions[1].Loaded += new RoutedEventHandler(SetMargin);
и это:
void SetMargin(TextBlock txtBlkMangaName, Grid grdImages)
{
txtBlkMangaName.Margin = new Thickness(grdImages.ColumnDefinitions[1].ActualWidth / 2 - txtBlkMangaName.Width / 2, 0, 0, 0);
}
на это:
void SetMargin(object sender, RoutedEventArgs e)
{
var imagesGrid = sender as Grid;
if( imagesGrid == null )
return;
var textBlock = imagesGrid.Tag as TextBlock;
if( textBlock == null )
return;
textBlock.Margin = new Thickness(imagesGrid.ColumnDefinitions[1].ActualWidth / 2 - textBlock.Width / 2, 0, 0, 0);
}
Как вы теперь можете видеть, Grid
на самом деле является отправителем для этого события, поэтому вы можете легко получить Это. Кроме того, вы можете получить ссылку на TextBlock
, который мы сохранили в свойстве Tag
ранее. Оттуда вы просто продолжаете как обычно и можете изменять свойства для каждого элемента.