我遇到了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扩展器相同但没有区别
答案 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(...);
}
}