Games
、ID
、およびDate
を含むTime
のリストがあります。このリストをDataContext
として設定しています。
次に、これらのゲーム用のDataTemplate
があります。
<DataTemplate DataType="{x:Type loc:Game}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Name="dateBlock" Grid.Column="0" Grid.Row="1"
Text="{Binding Date, StringFormat=d}"></TextBlock>
<TextBlock Name="TimeBlock" Grid.Column="1" Grid.Row="1"
Text="{Binding Time}"></TextBlock>
//need to but a button here for each row
</Grid>
</DataTemplate>
テンプレートを使用するには、単にこれを行うだけです。
<ListBox ItemsSource="{Binding}"></ListBox>
同じクリックイベントを持つこのリストビューの各行にButton
を追加する必要がありますが、ボタンがクリックされているゲームのIDを何らかの方法で渡します。
これどうやってするの?ハマった。それが意味をなさない場合は私に知らせてください、そして私はよりよく説明しようとします。
最初の部分では、Button
をDataTemplate
に追加し、Click
イベントをサブスクライブします
<DataTemplate DataType="{x:Type loc:Game}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Name="dateBlock" Grid.Column="0" Grid.Row="1" Text="{Binding Date, StringFormat=d}"></TextBlock>
<TextBlock Name="TimeBlock" Grid.Column="1" Grid.Row="1" Text="{Binding Time}"></TextBlock>
<Button Click="Button_Click">X</Button>
</Grid>
</DataTemplate>
コードビハインドイベントハンドラーで、クリックされたDataContext
のButton
を取得し、IDを確認できます
private void Button_Click(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
Game game = button.DataContext as Game;
int id = game.ID;
// ...
}
簡単に。 DataTemplateにButton
を追加し、Command
を指定してから、CommandParameter="{Binding}"
。 DataTemplate内のDataContextがオブジェクトです。
要求に応じて、コマンドの使用へのいくつかのリンク。
HTH、
ListBox.ItemTemplateを使用します。次に、クリックイベントで、DataContextを介してオブジェクトを取得できます。
<ListBox.ItemTemplate>
<DataTemplate>
<Button Content="^" IsEnabled="{Binding Path=IsNotFirst, Mode=OneWay}"
Click="btnMoveFDAup"/>
</DataTemplate>
</ListBox.ItemTemplate>
private void btnMoveFDAup(object sender, RoutedEventArgs e)
{
Button btn = ((Button)sender);
// btn.DataContext will get you to the row object where you can retrieve the ID
}