none
怎样设置ListBox选中项的背景色 RRS feed

  • 问题

  • 用Blend修改如下

    <VisualState x:Name="Selected">
    <Storyboard>
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="InnerGrid">
    <DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
    </ObjectAnimationUsingKeyFrames>
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemSelectedForegroundThemeBrush}"/>
    </ObjectAnimationUsingKeyFrames>
    </Storyboard>
    </VisualState>

    这里我把Value="Red"设置成红色,为什么选中项的颜色还是没有变化


    • 已编辑 runqian 2014年1月13日 5:53
    2014年1月13日 5:52

答案

  • 其实你可以 你可以用程式马的方式来产生 ListBoxItem

    这样就可以自订很多事件了

    假设您的最外框为Grid

    你可以在程式码写下

    //手指进入时

    Grid.MouseEnter+=(sender,e)=>{

    // 改变 Grid的颜色

    }; 

    //手指离开时

    Grid.MouseLeave+=(sender,e)=>{

    // 改变 Grid的颜色

    }; 

    您可以参阅这篇文章,跟ListBox的用法差不多!


    http://www.dotblogs.com.tw/holiestar/archive/2013/12/28/136612.aspx


    在Listbox.items.add();

    加入您的ListBoxItem 

    ListBoxItem 最外层可以用Grid 做!

    你可以自定义一个 方法来产生UIElement 

    public Grid CreateListBoxItem(可以丢参数进来 配置Grid ){

    Grid grid=new Grid();

    .......你自定义的配置.........

    //手指进入时

    Grid.MouseEnter+=(sender,e)=>{

    // 改变 Grid的颜色

    }; 

    //手指离开时

    Grid.MouseLeave+=(sender,e)=>{

    // 改变 Grid的颜色

    }; 

    return Grid;

    }

    希望对您有帮助!
    2014年1月19日 11:26