SilverLight中的一些常用控件

常用控件:指经常会用到但不会注意到的一些控件中的属性。那些简单明了的,如:Button控件及其Click属性就不用说了

  • HyperLinkButton

    可以添加超级链接的Button,其属性:

    NavigateUri="超链接地址"

    TargetName="_blank"(在新的页面打开超链接)、"_parent"、"_self"等(默认是在当前页面打开超链接)

  • CheckBox

    <CheckBox x:Name="cb" Content="选择控件" Click="cb_Click" Checked="cb_Checked" unChecked="cb_unChecked"/>

    如果判断选择控件是否为选中状态:this.cb.isChecked返回值类型为bool?。

    因此可以看出CheckBox默认下有三种状态:true、false、不确定

    因为checkBox中三种状态,所以如果使用它的Click事件,判断是否控件是否为选择状态时:

      

if(this.cb.isChecked == true)
{
     MessageBox.Show("选择状态");
}
else
{
     MessageBox.Show("未选择状态");
}

    这样写就会使产品上线后,出现错误。因为当用户选择控件处于不确定状态时,你会记录错误的用户状态。

    这样就要:

if(this.cb.isChecked == true)
{
   //选择状态
}
else if(this.cb.isChecked == false)
{
   //未选择状态
}

   CheckBox还有个属性:IsThreeState="true"表示用三种状态,当然你需要使用false(提醒:属性单词应该没写错)

    如果使用IsThreeState="false",是不是就可以直接使用第一段代码了呢,我没有试过,真的!

  如果使用Click属性让你感到这种判断不爽,那就使用Checked=""和UnChecked=""事件(提醒:事件名称应该是这样写的)

   

private void cb_Checked(Object sender,RoutedEventArgs e)
{
    //checkBox is Checked
}

private void cb_UnChecked(Object sender,RoutedEventArgs e)
{
    //checkBox is unChecked
}

   那么如果当一个页面中有不止一个CheckBox怎么办呢,是不是每个CheckBox都要给它一个Click事件,然后在Click事件中判断checkBox的三种或两种状态呢,

亦或是,为每个checkBox给出Checked="cb_Checked"和UnChecked="cb_UnChecked"事件呢,

  这样写当然没问题,而且一个类中多个十几行代码,一个项目多个几百行,上千行这种简单的代码,没有多大影响。但……,总是不好

那么解决方案:

  给多个CheckBox相同的事件方法,即选择事件、未选择事件和单击事件触发后调用相同的方法。

<CheckBox x:Name="cb1" Content="" Click="checkBox_Click"  Checked="checkBox_Checked" UnChecked="checkBox_UnChecked"/>                                          

<CheckBox x:Name="cb2" Content="" Click="checkBox_Click"  Checked="checkBox_Checked" UnChecked="checkBox_UnChecked"/>                                          

private void checkBox_Checked(Object sender,RouteEventArgs e)
{
    CheckBox cb = sender as CheckBox;
    Message.Show("");
}

  上面这段代码,写着写着感觉不太好,好像还是要做很多判断(你总要知道是那个选择了,对应做出不同的状态),所以就不想继续写了。

  根据自己的需要吧

    

原文地址:https://www.cnblogs.com/lh-V/p/3427797.html