Windows phone 8.1 xaml Listview选定项目样式

Windows phone 8.1 xaml Listview选定项目样式,xaml,winrt-xaml,windows-phone-8.1,Xaml,Winrt Xaml,Windows Phone 8.1,亲爱的各位,我对windows phone和xaml都是新手。 现在我的pivot模板上有listview,我只希望当我在listview中选择一个项目时,这里更改的背景颜色是我的xaml代码 <ListView x:Name="LVPrimary" Grid.Row="2" Grid.Column="0" ItemsSource="{Binding}"

亲爱的各位,我对windows phone和xaml都是新手。 现在我的pivot模板上有listview,我只希望当我在listview中选择一个项目时,这里更改的背景颜色是我的xaml代码

                        <ListView x:Name="LVPrimary" Grid.Row="2" Grid.Column="0" 
                        ItemsSource="{Binding}"
                        IsItemClickEnabled="True"
                        ItemClick="LVPrimary_ItemClick"  

                        ContinuumNavigationTransitionInfo.ExitElementContainer="True">

                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="auto"/>
                                        <ColumnDefinition Width="*"/>
                                    </Grid.ColumnDefinitions>
                                    <Border Width="40" Height="40" CornerRadius="5,5,5,5">
                                        <Border.Background>
                                            <ImageBrush ImageSource="{Binding ImagePath}" />
                                        </Border.Background>
                                    </Border>
                                    <StackPanel Grid.Row="0" Grid.Column="1" Margin="0,0,0,0">
                                        <TextBlock 
                                Text="{Binding Code}"
                                TextWrapping="Wrap"
                                Pivot.SlideInAnimationGroup="1"
                                CommonNavigationTransitionInfo.IsStaggerElement="True"
                                Style="{ThemeResource ListViewItemTextBlockStyle}"
                                Margin="0,0,19,0"/>
                                        <TextBlock
                                            TextWrapping="NoWrap" TextTrimming="CharacterEllipsis"
                                Text="{Binding Name}"
                                Pivot.SlideInAnimationGroup="2" 
                                CommonNavigationTransitionInfo.IsStaggerElement="True" 
                                Style="{ThemeResource ListViewItemContentTextBlockStyle}"
                                Margin="0,0,5,0"/>
                                    </StackPanel>
                                </Grid>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>

很抱歉回复太晚。您将有一个
列表
可观察收集

您可以做的是-定义一个
SolidColorBrush
属性,并将该属性绑定到项目网格。我创建了以下示例:-

这是我的Item类:-确保实现了
INotifyPropertyChanged

public class Item : INotifyPropertyChanged
{
    public string Something { get; set; }

    public SolidColorBrush ItemBackground
    {
        get { return _itemBackground; }
        set
        {
            _itemBackground = value;
            OnPropertyChanged("ItemBackground");
        }
    }

    private SolidColorBrush _itemBackground;


    public event PropertyChangedEventHandler PropertyChanged;

    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
}
我的示例&simple Xaml是:-

<ListView x:Name="LVPrimary" IsItemClickEnabled="True" ItemClick="ListViewBase_OnItemClick">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Background="{Binding ItemBackground}" Height="100" Width="200">
                    <TextBlock Text="{Binding Something}"></TextBlock>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
 </ListView>

希望它能对您有所帮助。

下面的解决方案对我来说很好

 var griditem = ListViewName.ContainerFromItem(ListViewName.SelectedItem);                     
 var a = ((Windows.UI.Xaml.Controls.Panel)((Windows.UI.Xaml.Controls.ContentControl)listViewItem).ContentTemplateRoot
 a.Background=  new SolidColorBrush(Windows.UI.Colors.Red);


 var textitem = ListViewName.ContainerFromItem(ListViewName.SelectedItem);                     
 var a = ((Windows.UI.Xaml.Controls.Panel)((Windows.UI.Xaml.Controls.ContentControl)listViewItem).ContentTemplateRoot).Children;
 ((TextBlock)a.ElementAt(0)).Text= "Your Text";

首先删除不必要的代码。现在在此listview项目上单击我想更改背景颜色您想更改您所选项目的背景颜色,对吗?是的,亲爱的,我想更改我所选项目的样式亲爱的,我会尝试您的解决方案,我希望它对我有效,但我能问一下,在xaml中是否有任何方法可以做到这一点,您好,看,一切都有可能。肯定会有办法的。这是我们必须探索的。现在我对这方面的知识还不够。如果你将来得到了,让人们知道:)
 var griditem = ListViewName.ContainerFromItem(ListViewName.SelectedItem);                     
 var a = ((Windows.UI.Xaml.Controls.Panel)((Windows.UI.Xaml.Controls.ContentControl)listViewItem).ContentTemplateRoot
 a.Background=  new SolidColorBrush(Windows.UI.Colors.Red);


 var textitem = ListViewName.ContainerFromItem(ListViewName.SelectedItem);                     
 var a = ((Windows.UI.Xaml.Controls.Panel)((Windows.UI.Xaml.Controls.ContentControl)listViewItem).ContentTemplateRoot).Children;
 ((TextBlock)a.ElementAt(0)).Text= "Your Text";