Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在选择更改Wp8时更改列表框项目的图像_C#_.net_Image_Windows Phone 8_Listboxitem - Fatal编程技术网

C# 如何在选择更改Wp8时更改列表框项目的图像

C# 如何在选择更改Wp8时更改列表框项目的图像,c#,.net,image,windows-phone-8,listboxitem,C#,.net,Image,Windows Phone 8,Listboxitem,我必须显示一个列表框,其UI类似于以下内容: 在更改列表框项目的选择时,我可以更改列表框项目的背景和前景。但我也需要改变图像。选择更改时,图像应更改,当我选择其他项目时,上一个项目图像应重置,下一个选定项目图像应更改 可能吗? 我该怎么做 编辑1:我正在使用的数据模板 <DataTemplate x:Key="SideListTemplate"> <StackPanel Orientation="Vertical" Margin="0" Height="73"&

我必须显示一个列表框,其UI类似于以下内容:

在更改列表框项目的选择时,我可以更改列表框项目的背景和前景。但我也需要改变图像。选择更改时,图像应更改,当我选择其他项目时,上一个项目图像应重置,下一个选定项目图像应更改

可能吗? 我该怎么做

编辑1:我正在使用的数据模板

<DataTemplate x:Key="SideListTemplate">
        <StackPanel Orientation="Vertical" Margin="0" Height="73">
            <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="10">
                <Image Width="50" VerticalAlignment="Center"
                       Height="50" Source="{Binding OptionImageSource}"></Image>
                <TextBlock Margin="20,0,0,0" VerticalAlignment="Center"
                           Text="{Binding OptionName}" FontSize="25"></TextBlock>
            </StackPanel>
            <Image Height="1" Source="/Assets/Images/SideBar/CL_divider_line.png"></Image>
        </StackPanel>
    </DataTemplate>
我使用的风格是:

<Style x:Key="SelectedItemStyle" TargetType="ListBoxItem">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="BorderBrush" Value="Transparent"/>
        <Setter Property="Padding" Value="0"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Top"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Border x:Name="LayoutRoot" BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" 
                            HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
                            VerticalAlignment="{TemplateBinding VerticalAlignment}">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="MouseOver"/>
                                <VisualState x:Name="Disabled">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="LayoutRoot">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource TransparentBrush}"/>
                                        </ObjectAnimationUsingKeyFrames>
                                        <DoubleAnimation Duration="0" To=".5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ContentContainer"/>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="SelectionStates">
                                <VisualState x:Name="Unselected">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames
                                Storyboard.TargetName="ContentContainer"
                                Storyboard.TargetProperty="Foreground"
                                Duration="0">
                                            <DiscreteObjectKeyFrame  KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <SolidColorBrush Color="#3A3939"/>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Selected">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames
                                Storyboard.TargetName="ContentContainer"
                                Storyboard.TargetProperty="Foreground"
                                Duration="0">
                                            <DiscreteObjectKeyFrame  KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <SolidColorBrush Color="#FFFFFF"/>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                        <ObjectAnimationUsingKeyFrames
                                Storyboard.TargetName="border"
                                Storyboard.TargetProperty="Background"
                                Duration="0">
                                            <DiscreteObjectKeyFrame  KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <SolidColorBrush Color="#0659B7"/>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <StackPanel x:Name="border" Orientation="Horizontal">
                            <ContentControl x:Name="ContentContainer" 
                                            ContentTemplate="{TemplateBinding ContentTemplate}" 
                                            Content="{TemplateBinding Content}" 
                                            Foreground="{TemplateBinding Foreground}" 
                                            HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                            Margin="{TemplateBinding Padding}" 
                                            VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
xaml代码是:

<ListBox Name="listSideOptions"                       
                     ItemContainerStyle="{StaticResource SelectedItemStyle}"                          
                     ItemTemplate="{StaticResource SideListTemplate}">
            </ListBox>
谢谢 Deepti

试试这个

private void listname_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
         (((sender.Content as StackPanel).Children[0] as StackPanel).Children[0] as Image).Source 
         = //Whatever the new source is;

         listSideOptions.SelectedIndex = -1;
    }

共享列表框DataTemplateXamli如果已成功更改背景,请对图像的ImageSource执行相同操作。可以在SelectionChanged事件中完成,也可以通过VisualStates-完成。我已经添加了用于列表框的数据模板和样式。请看问题。谢谢Romasz,我会尽量让你知道的。