none
Silverlight控件响应问题 RRS feed

  • 问题

  • 我做的SilverLight应用遇到这样的情况:

    例如一个按钮,有时候只需单击就会响应了,有时候却需要双击。
    或者DataGrid里的CheckBox,有时候单击就可以勾选,但是有时候却需要双击。

    这样的行为给用户带来很大的困扰,不知道何时需要单击何时需要双击。

    请问,这是什么原因造成的?
    fangjie
    2009年4月17日 10:55

答案

  • DataGrid原因是这样的:有的时候控件不是当前Focus 的控件,所以第一次click的结果是把当前的Focus设置到CheckBox所属的Cell,第二次单击的时候,才会开始更改。
    如果你真的想改变这个默认的行为,你可以设置自定义column, 象这样:

                <data:DataGrid.Columns>
                    <data:DataGridTemplateColumn Header="MyBool">
                        <data:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox IsChecked="{Binding Boolean, Mode=TwoWay}" />
                            </DataTemplate>
                        </data:DataGridTemplateColumn.CellTemplate>
                    </data:DataGridTemplateColumn>
                </data:DataGrid.Columns>
    • 已标记为答案 KeFang Chen 2009年4月23日 10:00
    2009年4月17日 20:21

全部回复

  • DataGrid原因是这样的:有的时候控件不是当前Focus 的控件,所以第一次click的结果是把当前的Focus设置到CheckBox所属的Cell,第二次单击的时候,才会开始更改。
    如果你真的想改变这个默认的行为,你可以设置自定义column, 象这样:

                <data:DataGrid.Columns>
                    <data:DataGridTemplateColumn Header="MyBool">
                        <data:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox IsChecked="{Binding Boolean, Mode=TwoWay}" />
                            </DataTemplate>
                        </data:DataGridTemplateColumn.CellTemplate>
                    </data:DataGridTemplateColumn>
                </data:DataGrid.Columns>
    • 已标记为答案 KeFang Chen 2009年4月23日 10:00
    2009年4月17日 20:21
  • 你说的问题是不是指Silverlight程序打开之后有个虚框,需要点击一下才能引发事件?这一般是浏览器的安全性的提示,FLASH如果在不加任何条件的情况下也会出现。

    My blog: http://blog.csdn.net/dotfun http://dotfun.cnblogs.com

    My contact: QQ:372900288 E-mail:372900288@qq.com msn:sellnet007@hotmail.com

    2009年4月20日 9:01
    版主
  • DataGrid的用户操作问题,你行中添加了Button CheckBox等控件,要点这个Button
    点击两次情况
    第一次点击先选中本行,
    第二次点击才是点击Button控件,所以点击了两次

    点击一次情况
    如果原有行就是在选中行中进行操作,那么就只需要点击一次即可.


    可以仔细观察,当选中行的时候,本行会突出显示,可能跟原本的asp.net DataGrid的操作习惯不一样,跟用户说明,或者明确提示了即可.

    2009年4月22日 16:33
    版主