常用控件:指经常会用到但不会注意到的一些控件中的属性。那些简单明了的,如: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相同的事件方法,即选择事件、未选择事件和单击事件触发后调用相同的方法。
private void checkBox_Checked(Object sender,RouteEventArgs e){ CheckBox cb = sender as CheckBox; Message.Show("");}
上面这段代码,写着写着感觉不太好,好像还是要做很多判断(你总要知道是那个选择了,对应做出不同的状态),所以就不想继续写了。
根据自己的需要吧