###実現したいこと
WPFで2*2のGrid内に画像を表示します。
画像のURLをコードビハインドで2次元配列(っぽい)インデクサのIndexer[x,y]で定義しており、それを下のxamlコードでBindingして表示しようとしています。
各セルに配置しているThumb要素はControlTemplateとStyleを使ってImageとして表示しています。
このTemplateの中のImage要素にIndexer[x,y]からとってきたURLをBindingしようとしているのですが、このx,yにThumbコントロールそれぞれに設定しているRow・Columnの値を設定したいです。
Indexer[x,y]には2*2=4種類の画像のURLを保持していると考えてください。
上記のように設定できれば、Gridのセルそれぞれに1種類ずつ、計4種類の画像が表示されることになります。
BindingのPath内に、Row・Columnのような適用先によって変化する値を設定することは可能でしょうか?
xaml
1<Window x:Class="ThumbTest.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:ThumbTest" 7 mc:Ignorable="d" 8 Title="MainWindow" Height="450" Width="800"> 9 <Grid x:Name="BoardGrid" HorizontalAlignment="Center" Margin="0,0,0.0,0" VerticalAlignment="Bottom" ShowGridLines="True" Height="300" Width="360" Grid.ColumnSpan="4" Opacity="0.985"> 10 <Grid.ColumnDefinitions> 11 <ColumnDefinition Width="*"/> 12 <ColumnDefinition Width="*"/> 13 </Grid.ColumnDefinitions> 14 <Grid.RowDefinitions> 15 <RowDefinition Height="*"/> 16 <RowDefinition Height="*"/> 17 </Grid.RowDefinitions> 18 <Grid.Resources> 19 <ControlTemplate x:Key="ThumbTmplate" TargetType="Thumb"> 20 <Image Source= "{Binding Path=Indexer[x\,y]}" /> 21 <!--↑このx,yに下のThumbコントロールそれぞれに設定しているRow・Columnの値を設定したい--> 22 </ControlTemplate> 23 <Style TargetType="{x:Type Thumb}"> 24 <Setter Property="Template" Value="{StaticResource ThumbTmplate}"/> 25 </Style> 26 </Grid.Resources> 27 <Thumb Name="GridCell0_0" Grid.Row="0" Grid.Column="0" 28 DragCompleted="mark_DragCompleted" 29 DragStarted="mark_DragStarted" 30 DragDelta="mark_DragDelta" 31 > 32 </Thumb> 33 <Thumb Name="GridCell0_1" Grid.Row="0" Grid.Column="1" 34 DragCompleted="mark_DragCompleted" 35 DragStarted="mark_DragStarted" 36 DragDelta="mark_DragDelta" 37 > 38 </Thumb> 39 <Thumb Name="GridCell1_0" Grid.Row="1" Grid.Column="0" 40 DragCompleted="mark_DragCompleted" 41 DragStarted="mark_DragStarted" 42 DragDelta="mark_DragDelta" 43 > 44 </Thumb> 45 <Thumb Name="GridCell1_1" Grid.Row="1" Grid.Column="1" 46 DragCompleted="mark_DragCompleted" 47 DragStarted="mark_DragStarted" 48 DragDelta="mark_DragDelta" 49 > 50 </Thumb> 51 </Grid> 52</Window>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/10/09 12:56 編集