2013-01-01 6 views
0

Я использую Caliburn.Micro.Telerik условные обозначения project.Caliburn.Micro.Telerik Соглашение RadTab для IsEnabled

У меня есть мнение, что динамически загружает Telerik Вкладки просмотра моделей:

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

я поставил IsEnabled свойство OnOne из вкладок просмотра моделей ложь, но Tab всегда включен.

Поддерживается ли это? Если нет, как я могу добавить его?

ответ

1

Я уверен, что CM не допускает больше, чем одно свойство для условных условных обозначений, и я не уверен, что свойство default для 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)

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

(Возможно, вы заметили «?», Я не уверен, какие события RadTabItem имеет доступное значение и которое должно быть событием по умолчанию для запуска действий, поэтому вам нужно будет заполнить это в себе, см. Здесь для получения дополнительной информации info: Caliburn element convention)

Edit:

На самом деле, глядя на СРК, кажется, по умолчанию конвенции не поставляется для RadTabItem

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

Так это выглядит, как вы должны пойти вниз ConventionManager маршрут

+0

спасибо, что должно работать :) – nihique

0

Я пытался используя ConventionManager, но не удалось.

Я закончил с использованием этого XAML как это было предложено Charleh и Валериу на странице GitHub Issue (https://github.com/vcaraulean/Caliburn.Micro.Telerik/issues/12#issuecomment-11840602):

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

Нет Probs, было бы интересно пройти через код CM и посмотрите, почему это не связано с этим - возможно, что-то связано с тем, что элементы элемента являются элементом списка, а не фактической виртуальной машиной, вы можете обойти это, используя 'Bind.ModelWithoutContext', но вам все равно придется добавьте стиль, чтобы сообщить элементам, к какой модели они должны привязываться! – Charleh

+0

Если у вас нет x: имя, указанное в xaml caliburn, даже не будет посещать этот предмет в связующем. Соглашения Caliburn предназначены для привязки названных элементов в представлении названных элементов в viewmodel –