如何实现这个ui?
item1 | X item2 | X item3 | X
带有item1,item2,item3的具有SelectionChanged事件,X是带有点击事件的图像
我试过这个
<telerikPrimitives:RadDataBoundListBox
x:Name="AddressListBox"
ItemsSource="{Binding hereRestAddressDetail}"
SelectedItem="{Binding hereRestDetail}"
SelectionChanged="AddressListBox_SelectionChanged"
ItemAnimationMode="PlayAll"
EmptyContent="">
<telerikPrimitives:RadDataBoundListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Rectangle Grid.Column="0" Grid.RowSpan="2" Width="10">
<Rectangle.Fill>
<SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
</Rectangle.Fill>
</Rectangle>
<StackPanel Grid.Column="1" Grid.RowSpan="2" >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding LocalizedResources.by,
Source={StaticResource LocalizedStrings}}"
Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="{Binding creator}" Margin="-8,0,0,0"
Style="{StaticResource PhoneTextAccentStyle}"/>
</StackPanel>
<TextBlock Text="{Binding street}"
TextWrapping="Wrap"
Style="{StaticResource PhoneTextLargeStyle}" />
<TextBlock Text="{Binding formatedStreet}"
TextWrapping="Wrap"
Style="{StaticResource PhoneTextSubtleStyle}" />
</StackPanel>
<Image Source="{Binding ratingButton}" Grid.Column="2"
Stretch="Uniform" Width="80"
Tag="{Binding Id}" Tap="rate_Tap"/>
<TextBlock Text="{Binding ratingValue}" HorizontalAlignment="Center"
TextWrapping="Wrap" Grid.Column="2" Grid.Row="1"
Style="{StaticResource PhoneTextSubtleStyle}"/>
</Grid>
</DataTemplate>
</telerikPrimitives:RadDataBoundListBox.ItemTemplate>
</telerikPrimitives:RadDataBoundListBox>
但是当我点击图像时它将执行我的事件(在这种情况下我只是通过显示消息框来测试它)但在此之后它还执行我的SelectionChanged事件......
如何指定仅在我点按图片时触发的图片点击事件?
答案 0 :(得分:0)
这应该有效:
bool ignoreSelectionChanged;
void rate_Tap(...) {
ignoreSelectionChanged = true;
//do you image tap things here
}
void AddressListBox_SelectionChanged(...) {
if(ignoreSelectionChanged) {
ignoreSelectionChanged = false; //reset the bool, so that it will skip only once
return;
}
//do your things on selection change here
}