首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

wpf中checkbox的这段代码为何没有效果?解决方案

2012-04-13 
wpf中checkbox的这段代码为何没有效果?C# codeRowDefinition Height120RowDefinition.StyleStyle

wpf中checkbox的这段代码为何没有效果?

C# code
<RowDefinition Height="120">                <RowDefinition.Style>                    <Style TargetType="RowDefinition">                        <Style.Triggers>                            <DataTrigger Binding="{Binding ElementName=cbSendSms,Path=IsChecked}" Value="True">                                <Setter Property="Height" Value="120"/>                            </DataTrigger>                            <DataTrigger Binding="{Binding ElementName=cbSendSms,Path=IsChecked}" Value="False">                                <Setter Property="Height" Value="0"/>                                                           </DataTrigger>                        </Style.Triggers>                    </Style>                </RowDefinition.Style>                            </RowDefinition>


cbSendSms是一个checkbox,原想是勾选这个checkbox后把grid的RowDefinition高度设为120(显示),取消勾选后设为0(隐藏),但却没有效果, 用radiobutton就可以,测试过checkbox的checked事件只是在选中是才触发,取消选中时没有触, 是否跟这个有关系,如果是那有什么方法解决这个

[解决办法]
如果安装了Blend后,添加System.Windows.Interactivity和Microsoft.Expression.Interactions项目引用,然后在xaml中添加引用:

HTML code
                xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"        xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
[解决办法]
checked 应该是被选中后的事件吧
感觉你可以在mouseleftdown里面判断checkbox是否被选中(checkbox.checked)
[解决办法]
如果只是折腾Grid的Row,那么把Row这行设为Auto,然后将Row里面的内容的Visibility绑定到Checkbox的IsChecked上,当然要配备一个Bool2VisibilityConverter
当IsChecked=true的时候,返回Visible,否则返回Collapsed
这里用Collapsed而不用Hidden的原因就是塌陷以后不会在Measure中跟Parent申请空间,而Hidden则会持有空间,虽然不显示,而Auto则会变为0,达到你的效果

[解决办法]
貌似我还没有安装Blend ,就说怎么找不到 System.Windows.Interactivity 的引用落
[解决办法]
测试过checkbox的checked事件只是在选中是才触发,取消选中时没有触发

checkbox有unchecked事件,在那里添加代码即可

热点排行