IsEnabled的Caliburn.Micro.Telerik RadTab约定

时间:2013-01-01 17:02:48

标签: wpf mvvm telerik caliburn.micro isenabled

我正在使用Caliburn.Micro.Telerik约定project

我有动态加载telerik Tabs视图模型的视图:

<telerik:RadTabControl x:Name="Items" Grid.Row="1" Margin="10,0,0,0" />

我已将Tabs视图模型中的IsEnabled属性设置为false,但该Tab始终处于启用状态。

支持吗?如果没有,我该如何添加呢?

2 个答案:

答案 0 :(得分:1)

我很确定CM不允许多个元素约定属性,我不确定RadTabItem的默认属性是什么。您始终可以使用选项卡控件上的样式使用显式绑定

<telerik:RadTabControl x:Name="Items" Grid.Row="1" Margin="10,0,0,0">
    <telerik:RadTabControl.Resources>
        <Style TargetType="telerik:RadTabItem">
            <Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
        </Style>
    </telerik:RadTabControl.Resources>
</telerik:RadTabControl>

或者尝试使用ConventionManager并为它们设置默认约定(尽管这可能已经设置为Telerik CM框架中的某些内容)

ConventionManager.AddElementConvention<RadTabItem>(RadTabItem.IsEnabledProperty, "IsEnabled", "?");

(您可能已经注意到“?”,我不确定哪些事件RadTabItem可用,哪些应该是触发操作的默认事件,因此您必须自己填写此事件,请参阅这里有更多信息:Caliburn element convention

编辑:

实际上查看src,似乎没有为RadTabItem

提供默认约定

https://github.com/vcaraulean/Caliburn.Micro.Telerik/blob/master/WPF/Caliburn.Micro.Telerik/TelerikConventions.cs

所以看起来你应该走ConventionManager路线

答案 1 :(得分:0)

我尝试使用ConventionManager但没有成功。

我最终使用了Charleh和Valeriu在github问题页面(https://github.com/vcaraulean/Caliburn.Micro.Telerik/issues/12#issuecomment-11840602)建议使用的XAML:

<telerik:RadTabControl x:Name="Items">
    <telerik:RadTabControl.ItemContainerStyle>
        <Style TargetType="telerik:RadTabItem">
            <Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
        </Style>
     </telerik:RadTabControl.ItemContainerStyle>
</telerik:RadTabControl>