在Xaml(Silverlight)中选择一个项目时,设置组合框的VisualState

jpdev

当我的组合框展开并选择一个项目时,我希望组合框更改视觉状态(突出显示)。这将表示已选择某项。我尝试了各种VisualState,但是在这种情况下它们都不会触发。我怎样才能做到这一点?谢谢。

约翰

标准的ComboBox根本没有状态来区分选择某物和什么都不选。

解决底层问题的方法有很多种,并且主要取决于以下问题的答案:

您是否真的需要更改ComboBox本身的外观,还是足以突出显示所选项目的样式?

如果是后者,最好使用为ComboBoxItems使用自定义控件模板的相当简单的方法。

如果您真的想以这种方式设置ComboBox本身的样式,我可以想到两种选择:

A)使用自定义模板将自定义状态添加到ComboBox。

复制ComboBox的控件模板,然后将另一个状态组添加到已经存在的状态中。两者通常都在Expression Blend中完成。

之后,您可以使用以下命令更新代码中的新状态

VisualStateManager.GoToState(this, "Selected", true);

例如。选择第一项时,您必须自己设置这些状态。这可以在SelectionChanged事件上完成。

B)从ComboBox派生

如果您想经常以这种方式使用该控件,则值得从ComboBox派生出自己的自定义控件。

它看起来像这样:

[TemplateVisualState(Name = "SelectedStates", GroupName = "Unselected")]
[TemplateVisualState(Name = "SelectedStates", GroupName = "Selected")]
// ... (more attributes copied from the ComboBox ones)
public class MyComboBox : ComboBox
{
    public MyComboBox()
    {
        SelectionChanged += HandleSelectionChanged;

        DefaultStyleKey = typeof(MyComboBox);
    }

    void HandleSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        VisualStateManager.GoToState(this, SelectedItem != null ? "Selected" : "Unselected", true);
    }
}

然后,您将需要基于默认ComboBox样式(或通常使用的任何样式)的默认样式。

请注意,我没有进行任何测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP从“组合”框中选择一个项目,然后将值设置为输入字段

来自分类Dev

仅当我从组合框中选择一个项目时才执行操作

来自分类Dev

当我在组合框中选择一个项目时如何防止TextChanged事件?

来自分类Dev

当它是前一个项目的前缀时,如何在 wpf 组合框中选择一个项目?

来自分类Dev

在php中选择另一个组合框时,如何使组合框可见?

来自分类Dev

在自动完成组合框中选择下一个项目时遇到问题

来自分类Dev

在组合框中选择一个项目,该项目是根据AJAX请求填充的

来自分类Dev

我想从组合框中选择一个项目,并在单击按钮时根据所选项目打开另一个框架

来自分类Dev

从一个组合框中选择的项目如何更改第二个组合框上的特定项目?

来自分类Dev

使用 LinqToSql 填充组合框并从中选择一个项目

来自分类Dev

如何从c#中的另一个组合框中删除从组合框中选择的项目

来自分类Dev

选择一个组合框项XAML

来自分类Dev

在组合框中选择一个项目,并用与先前的php和mysql选项相关的数据填充另一个组合框

来自分类Dev

当我在 DropDownList 中选择一个项目时 Selected 未设置为 true

来自分类Dev

当从选择框中选择一个项目时,为什么没有调用组件类中的方法?

来自分类Dev

如果用户在另一个组合框中选择一个值,则选择一个组合框的值

来自分类Dev

在Java的组合框中选择项目时更新JTable

来自分类Dev

从组合框中选择项目时显示 MessageBox

来自分类Dev

当另一个组合框更改所选值时设置 ComboBox 所选项目 c#

来自分类Dev

在DataGrid中选择一个项目

来自分类Dev

无法在jQuery mobile中选择组合框的第一个元素

来自分类Dev

如何从Ext JS Grid的组合框中选择一个值

来自分类Dev

无法在jQuery mobile中选择组合框的第一个元素

来自分类Dev

使用Selenium Webdriver从组合框中选择一个随机值

来自分类Dev

如何从我的组合框列表中选择一个值?

来自分类Dev

Python:从每个列表中选择一个项目,但要进行各种可能的组合

来自分类Dev

从列表框中选择一个项目,然后使用该项目的名称

来自分类Dev

从列表框中选择一个项目,然后使用该项目的名称

来自分类Dev

在另一个JComboBox中选择一个项目时如何显示JComboBox

Related 相关文章

  1. 1

    PHP从“组合”框中选择一个项目,然后将值设置为输入字段

  2. 2

    仅当我从组合框中选择一个项目时才执行操作

  3. 3

    当我在组合框中选择一个项目时如何防止TextChanged事件?

  4. 4

    当它是前一个项目的前缀时,如何在 wpf 组合框中选择一个项目?

  5. 5

    在php中选择另一个组合框时,如何使组合框可见?

  6. 6

    在自动完成组合框中选择下一个项目时遇到问题

  7. 7

    在组合框中选择一个项目,该项目是根据AJAX请求填充的

  8. 8

    我想从组合框中选择一个项目,并在单击按钮时根据所选项目打开另一个框架

  9. 9

    从一个组合框中选择的项目如何更改第二个组合框上的特定项目?

  10. 10

    使用 LinqToSql 填充组合框并从中选择一个项目

  11. 11

    如何从c#中的另一个组合框中删除从组合框中选择的项目

  12. 12

    选择一个组合框项XAML

  13. 13

    在组合框中选择一个项目,并用与先前的php和mysql选项相关的数据填充另一个组合框

  14. 14

    当我在 DropDownList 中选择一个项目时 Selected 未设置为 true

  15. 15

    当从选择框中选择一个项目时,为什么没有调用组件类中的方法?

  16. 16

    如果用户在另一个组合框中选择一个值,则选择一个组合框的值

  17. 17

    在Java的组合框中选择项目时更新JTable

  18. 18

    从组合框中选择项目时显示 MessageBox

  19. 19

    当另一个组合框更改所选值时设置 ComboBox 所选项目 c#

  20. 20

    在DataGrid中选择一个项目

  21. 21

    无法在jQuery mobile中选择组合框的第一个元素

  22. 22

    如何从Ext JS Grid的组合框中选择一个值

  23. 23

    无法在jQuery mobile中选择组合框的第一个元素

  24. 24

    使用Selenium Webdriver从组合框中选择一个随机值

  25. 25

    如何从我的组合框列表中选择一个值?

  26. 26

    Python:从每个列表中选择一个项目,但要进行各种可能的组合

  27. 27

    从列表框中选择一个项目,然后使用该项目的名称

  28. 28

    从列表框中选择一个项目,然后使用该项目的名称

  29. 29

    在另一个JComboBox中选择一个项目时如何显示JComboBox

热门标签

归档