0
탭 이벤트에서 스택 패널 배경색을 강조 표시하려고합니다. Stackpanel은 longlistselector 안에 있습니다. 내가 특정 요소에 누를 때 나는 코드WP8 스토리 보드 컬러 애니메이션 잘못된 작업 예외가 발생했습니다.
XAML 코드
**<phone:PhoneApplicationPage.Resources>
<local:BooleanToForegroundConverter x:Key="BooleanToForegroundConverter"/>
<Style x:Key="MyLongListMultiSelectorItemListStyle"
TargetType="toolkit:LongListMultiSelectorItem">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="toolkit:LongListMultiSelectorItem">
<StackPanel
Background="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=IsSelected, Mode=TwoWay,
Converter={StaticResource BooleanToForegroundConverter}}">
</phone:PhoneApplicationPage.Resources>**
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
<toolkit:LongListMultiSelector IsGroupingEnabled="True"
SelectionChanged="lstSongs_SelectionChanged"
GroupHeaderTemplate="{StaticResource BuddiesGroupHeaderTemplate}"
Background="Transparent"
JumpListStyle="{StaticResource AddrBookJumpListStyle}"
HideEmptyGroups="True"
x:Name="lstSongs"
toolkit:TiltEffect.IsTiltEnabled="True"
ItemsSource="{Binding Songs}"
**ItemContainerStyle="{StaticResource MyLongListMultiSelectorItemListStyle}"**
IsSelectionEnabledChanged="lstSongs_IsSelectionEnabledChanged"
>
<toolkit:LongListMultiSelector.ItemTemplate>
<DataTemplate >
<StackPanel
Margin="-40,0,0,17"
Width="432"
Height="78"
Tap="OnTap"
>
<TextBlock
Text="{Binding Name}"
Margin="0,-15,0,0"
Style="{StaticResource PhoneTextExtraLargeStyle}"
Padding="0,0,0,0"/>
<TextBlock
Text="{Binding Artist.Name}"
Margin="12,-6,12,0"
Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</DataTemplate>
</toolkit:LongListMultiSelector.ItemTemplate>
</toolkit:LongListMultiSelector>
그리고 변환기 구현
namespace musicplayer
{
class BooleanToForegroundConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((bool)value) ? App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush:new SolidColorBrush(Colors.Black);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new System.NotImplementedException();
}
}
}
**C# code ontap event**
private void OnTap(object sender, System.Windows.Input.GestureEventArgs e)
{
//BackgroundAudioPlayer.Instance.Track = ((FrameworkElement)sender).DataContext as AudioTrack;
//BackgroundAudioPlayer.Instance.Play();
Storyboard storyBoard = new Storyboard();
ColorAnimation animation = new ColorAnimation();
animation.To = (System.Windows.Media.Color)App.Current.Resources["PhoneAccentColor"];
animation.AutoReverse = true;
animation.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
StackPanel sp = sender as StackPanel;
Storyboard.SetTarget(animation, sp);
PropertyPath colorTargetPath = new PropertyPath("(Panel.Background).(SolidColorBrush.Color)");
Storyboard.SetTargetProperty(animation, colorTargetPath);
storyBoard.Children.Add(animation);
storyBoard.Begin();
}
다음과 같다하여 강조하고자하지만 잘못된 동작을 받고 있어요 storyBoard.Begin();에 대한 예외; 선. 내가 무엇이 부족합니까 ?? 나는 지금 막 창 전화 8을 배우기 시작한다 그래서 어떤 도움든지 아주 평가된다
저는 Windows 전화 개발을 처음 사용합니다. 이 코드에서 무슨 일이 일어나는지 설명해 주시겠습니까?> Background = "{RelativeSource TemplatedParent}, {RelativeSource TemplatedParent}, Path = IsSelected, Mode = TwoWay, Converter = {StaticResource BooleanToForegroundConverter}}" onTap of stackpanel – Archana
LongListMultiSelectorItem에는 부울 IsSelected 종속성 속성이 있습니다.이 속성은 항목을 선택/선택 취소 할 때마다 업데이트됩니다. 기본적으로 LongListMultiSelector의 항목을 두드리면 해당 속성이 트윅됩니다. 이 XAML 줄은 스택 패널의 배경을 해당 속성에 바인딩하고 변환기를 사용하여 원하는 브러시를 반환합니다. – Pantelis
내가 제안한 것을 사용하려고합니다. 하지만 이제 예외가 발생했습니다 \t {System.Windows.Markup.XamlParseException : 'musicplayer.BooleanToForegroundConverter'형식의 인스턴스를 만들 수 없습니다. 나는 수정 한 코드를 수정했다. – Archana