#c# #wpf #xaml #datagrid #stackpanel
#c# #wpf #xaml #datagrid #stackpanel
Вопрос:
Прямо сейчас я застрял при попытке получить доступ к StackPanel
внутри DataGrid
Cell
.
Моя цель — программно сгенерировать маленькие картинки (значки) внутри a StackPanel
на основе другого поля внутри a DataGrid
.
Это мой XAML для Column
…
<DataGridTemplateColumn Width="*" x:Name="generatedBandges">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<!--<Image Source="....Imagebadge.png" />-->
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Я просто не знаю, как туда добраться, чтобы генерировать значки для каждого Row
…
1-я правка: Я пытался обойти это, внедрив повторяющееся изображение и привязав ширину, но я не могу заставить это работать, и это решает проблему, только если у вас есть одна строка изображений (мне нужно больше строк : ( )
Код, который я пробовал…
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Rectangle Height="15" Width="{Binding Badge}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" >
<Rectangle.Fill>
<ImageBrush ImageSource="....Imagesim.png" TileMode="Tile" ViewportUnits="Absolute" Viewport="0,0,15,15"/>
</Rectangle.Fill>
</Rectangle>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
Есть ли способ привязать stackpanel? Так я могу добавить к ней элементы управления или что-то в этом роде?
2-я правка: Итак, я попробовал это … но снова не могу заставить это работать — могла бы понадобиться помощь..
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="....Imagesim.png"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
Комментарии:
1. вы не можете получить доступ к элементам управления внутри DataTemplate напрямую из кода. Лучше всего будет привязать источник изображения к свойству и изменить его по мере необходимости. Возможно, вы также захотите реализовать
INotifyPropertyChanged
. Также взгляните наBitmapSource
иIValueConverter
.2. Ну, я хотел бы несколько раз дублировать изображение, сопоставляя данные в datagrid, например, с рейтингом фильма… некоторые записи имеют три звездочки, а некоторые пять.
3. @DavidWaldo: К какой
StackPanel
строке вDataGrid
вы пытаетесь получить доступ и почему?4. Это может показаться глупым, но попробуйте использовать x: Bind вместо привязки к вашему ItemsSource