Combobox风格windows metro应用程序

时间:2012-12-16 23:03:36

标签: c# xaml windows-8 microsoft-metro

我正在Windows 8中开发一个xaml / c#metro风格应用程序。我想模拟Microsoft Calendar app comboBox Style(在事件详细信息页面中)。我的意思是,选择后有彩色框和边框的行为。我怎么能用视觉状态来做呢?

2 个答案:

答案 0 :(得分:1)

没有标准控制,您必须创建自己的/扩展标准组合框

答案 1 :(得分:0)

这样的事情应该有效:

<Combobox.Template>
    <ControlTemplate>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="FocusStates">
                <VisualState x:Name="Unfocused"/> <!--leave the unfocused state empty if the control already looks "unfocused" -->
                <VisualState x:Name="Focused">
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="background" Storyboard.TargetProperty="Opacity" To="0.2" Duration="0"/>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>

        <Border x:Name="background" Background="Red" Opacity="0" />
        <!--other stuff-->
    </ControlTemplate>
</Combobox.Template>

Combobox控件根据鼠标/键盘输入(如聚焦,按下,鼠标悬停等)自动切换其内置状态。通过切换状态,为当前状态定义的故事板将被反转,并且您拥有的故事板为新状态定义的将被应用。您可以在此处查看可用状态:http://msdn.microsoft.com/en-us/library/ms752094.aspx

(使用代码隐藏,您也可以根据事件等实现自己的状态,但这很少需要。)