Я хотел бы сделать привязку данных с массивом :
<Button x_Name="ButtonMap" Content="{Binding Tag[0], RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}">
Это работает.
Но, моя кнопка находится в ItemsControl и мне удалось получить индекс текущего элемента, как это :
{Binding Path=(ItemsControl.AlternationIndex),
RelativeSource={RelativeSource TemplatedParent},
StringFormat={}Index is {0}}
Теперь я бы использовал этот индекс, чтобы получить N-й элемент моего массива. Как это :
<Button x_Name="ButtonMap" Content="{Binding Tag[index], RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}">
Я пытался использовать StaticResource, но привязка не работала.
Вы можете мне помочь ?
РЕДАКТИРОВАТЬ :
файл XAML :
`<UserControl x_Class="INSAWorldWPF.Views.GameView"
mc_Ignorable="d"
d_DesignHeight="300" d_DesignWidth="300">
<UserControl.Background>
<ImageBrush ImageSource="/Views/Resources/background2.jpg"/>
</UserControl.Background>
<!--<Button Height="50" Margin="0,30" Command="{Binding TestCommand, Mode=OneWay}" Content="Demo Map"/>-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" VerticalAlignment="Center" Margin="30,0,0,0">
<StackPanel.Background>
<SolidColorBrush Color="Gray" Opacity=".3"/>
</StackPanel.Background>
<Image Source="{Binding ImageRace}" Width="200" Height="200" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,20" />
<TextBlock Text="{Binding PseudoCurrentPlayer}" FontFamily="pack://application:,,,/Views/Resources/#Ringbearer Medium" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="60"/>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock HorizontalAlignment="Center" FontFamily="pack://application:,,,/Views/Resources/#Cosmic Love" VerticalAlignment="Center" FontSize="40" Text="LifePoint : "/>
<TextBlock HorizontalAlignment="Center" FontFamily="pack://application:,,,/Views/Resources/#Cosmic Love" VerticalAlignment="Center" FontSize="40" Text="{Binding LifePoint}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock HorizontalAlignment="Center" FontFamily="pack://application:,,,/Views/Resources/#Cosmic Love" VerticalAlignment="Center" FontSize="40" Text="MovePoint : "/>
<TextBlock HorizontalAlignment="Center" FontFamily="pack://application:,,,/Views/Resources/#Cosmic Love" VerticalAlignment="Center" FontSize="40" Text="{Binding MovePoint}"/>
</StackPanel>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center" Margin="30,0">
<StackPanel.Background>
<SolidColorBrush Color="Gray" Opacity=".3"/>
</StackPanel.Background>
<ItemsControl ItemsSource="{Binding ListTile}" AlternationCount="150" Tag="{Binding UnitByTile}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DataTemplate.Resources>
<custom:TypeOfConverter x_Key="typeOfConverter" />
<System:Double x_Key="theMargin">0</System:Double>
</DataTemplate.Resources>
<Button x_Name="ButtonMap" Content="{Binding Path=Tag[?????????], RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}">
<Button.Resources>
</Button.Resources>
<Button.Style>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}" BorderBrush="Black" BorderThickness="1">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="1" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Opacity" Value="0.7" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ., Converter={StaticResource typeOfConverter} }" Value="Desert">
<Setter Property="Background" Value="Yellow" />
</DataTrigger>
<DataTrigger Binding="{Binding ., Converter={StaticResource typeOfConverter} }" Value="Swamp">
<Setter Property="Background" Value="DarkKhaki" />
</DataTrigger>
<DataTrigger Binding="{Binding ., Converter={StaticResource typeOfConverter} }" Value="Volcano">
<Setter Property="Background" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding ., Converter={StaticResource typeOfConverter} }" Value="Plain">
<Setter Property="Background" Value="ForestGreen" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="{Binding SizeMap}" Rows="{Binding SizeMap}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="600"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</StackPanel>
</Grid>
`
Я бы рекомендовал использовать a
MultiValueConverter
. Предполагая, чтоTag[]
это типstring[]
, вы могли бы использовать следующее:использование:
Простой
ValueConverter
не будет работать, потомуConverterParameter
что должен быть статичным. Индекс, который вы хотите использовать, должен быть привязан.Надеюсь, это работает для вас