2010-04-20 2 views
0

Представьте:MVVM Binding Выбранный RadOutlookBarItem

[RadOutlookBarItem1] [RadOutlookBarItem2] [RadOutlookBar] [CONTENCONTROL]

Что я хочу достичь, это:

Пользователь выбирает один из RadOutlookBarItem годов. Тег деталь связан как:

Tag="{Binding SelectedControl, Mode=TwoWay}" 

MVVM собственность

public string SelectedControl 
{ 
    get { return _showControl; } 
    set 
    { 
     _showControl = value; 
     OnNotifyPropertyChanged("ShowControl"); 
    } 
} 

ContentControl имеет несколько CustomControls и видимость тех связан, как:

<UserControl.Resources> 
     <Converters:BoolVisibilityConverter x:Key="BoolViz"/> 
    </UserControl.Resources> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <Views:ViewDocumentSearchControl Visibility="{Binding SelectedControl, Converter={StaticResource BoolViz}, ConverterParameter='viewDocumentSearchControl'}"/> 
     <Views:ViewStartControl Visibility="{Binding SelectedControl, Converter={StaticResource BoolViz}, ConverterParameter='viewStartControl'}"/> 
    </Grid> 

конвертер:

объект Преобразовать общественного (значение объекта, Тип targetType, параметр объекта, CultureInfo cultur е) { // здесь идет логика часть ... должна возвращать Visibility.Collapsed: Visibility.Visible на основе «стоимости объекта» значение

System.Diagnostics.Debugger.Break(); 
    return Visibility.Collapsed; 
} 

теперь, логически значение объекта всегда установлен в нуль. Итак, вот мой вопрос: как я могу поместить значение в SelectedControl Variable для тега RadOutlookBarItem. Я имею в виду что-то вроде

Tag="{Binding SelectedControl, Mode=TwoWay, VALUE='i.e.ControlName'"} 

Так что я могу решить, используя метод Convert, является ли видимость конкретного элемента управления будет присвоено значение свернутыми или видимым?

помощь ценится

Christian

--- Решение от Laurent ---

Да, это то, что я хочу, к сожалению, VS.NET 2010/Смешать 4RC падает после его реализации, как это:

<Views:ViewDocumentSearchControl Visibility="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource BoolViz}}"/> <Views:ViewStartControl Visibility="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource BoolViz}}"/> 

всякий раз, когда я открываю XAML в Blend/VS.NET, я получаю XYZ, перестала работать. Изменен возврат ValueConverter к Visibility.Visible, все тот же. Без понятия. Спасибо, в любом случае! Christian

--- мой (временное) решение/обходной путь ---

Хорошо, я закончил с этим решением:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      if (value != null && parameter != null) 
      { 
       var val = (string) value; 
       var ctrl = (string) parameter; 
       if (val.Equals(ctrl)) 
       { 
        return Visibility.Visible; 
       } 
       return Visibility.Collapsed; 
      } 
      return Visibility.Collapsed; 
     } 

и установить .tag в RadOutlookBarItem в CodeBehind. ..

ответ

0

Похоже, вы хотите передать текущий элемент в конвертер и вернуть видимость.Возможно, я не совсем понял, что вы имеете в виду, но если это так, то это должно сработать для вас:

Видимость = {Связывание RelativeSource = {RelativeSource Self}, Converter = {StaticResource BoolViz}}

Параметр «значение» будет установлен в ViewDocumentSearchControl в первом случае и в ViewStartControl во втором случае.

Это то, что вы искали?

Приветствие, Laurent

+1

@Christian: Пожалуйста, добавьте код на свой вопрос с некоторым дополнительным комментарием, а не включать его в комментариях, где он форматирует очень плохо. Его, возможно, одна из самых выдающихся различий в SO на форумах - это то, что редактирование вопросов и ответов возможно и активно поощряется. – AnthonyWJones