如何根据属性禁用Expander扩展

时间:2015-03-12 11:46:05

标签: c# .net wpf telerik expander

我遇到了telerik扩展器IsExpanded位

的问题
  • 情景 -

我想如果绑定属性为False,则用户不能扩展扩展器,如果扩展器是Expanded,则应自行关闭它。

  • 实施 -

我做了这样一个简单的风格 -

<Style TargetType="telerik:RadExpander">
    <Style.Triggers>
        <DataTrigger Binding="{Binding CanMultiSelect}" Value="False">
            <Setter Property="IsExpanded" Value="False"></Setter>
            <Setter Property="IsEnabled" Value="False"></Setter>
        </DataTrigger>
     </Style.Triggers>
 </Style>

这种风格部分工作正常,所以当canMultiSelect为false时,它会按原样禁用扩展器,但如果扩展器在属性变为false时展开,则它不会自行关闭它。

赞赏任何想法或其他实施。

- 编辑

我尝试过与wpf扩展器相同但没有区别

2 个答案:

答案 0 :(得分:0)

尝试:

<Style TargetType="telerik:RadExpander">
    <Setter Property="IsEnabled" Value="True">
    <Style.Triggers>
        <DataTrigger Binding="{Binding CanMultiSelect}" Value="False">
            <Setter Property="IsExpanded" Value="False"></Setter>
            <Setter Property="IsEnabled" Value="False"></Setter>
        </DataTrigger>
     </Style.Triggers>
 </Style>

这意味着默认IsEnabled将为true,当CanMultiSelect为false时,这些设置为false

答案 1 :(得分:0)

您无需通过设置器设置IsExpanded的值。相反,您应该在ViewModel上创建相应的属性并绑定到它:

... IsExpanded={Binding IsExpandedPropertyOnViewModel} ...

然后,在IsExpandedPropertyOnViewModel的设置器中,您可以实现所需的任何逻辑,并将支持字段保持为false,即使值为true

bool _isExpandedPropertyOnViewModel=false;
public bool IsExpandedPropertyOnViewModel{
   get { return _isExpandedPropertyOnViewModel;}
   set
   {
      if(CanMultiSelect)
      {
         _isExpandedPropertyOnViewModel=false;     
      }
      else
         _isExpandedPropertyOnViewModel=value;     
      NotifyPropertyChanged(...);
   }
}