Связывание MVVM выбрано RadOutlookBarItem - PullRequest
0 голосов
/ 20 апреля 2010

Представьте себе:

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

Чего я хочу достичь:

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

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

MVVM Property

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>

Конвертер:

открытый объект Convert (значение объекта, тип targetType, параметр объекта, культура CultureInfo) { // здесь идет логическая часть ... должна возвращать Visibility.Collapsed: Visibility.Visible на основе значения 'value объекта'

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

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

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

Чтобы с помощью метода преобразования можно было решить, установлена ​​ли видимость определенного элемента управления как свернутая или видимая?

помощь приветствуется

Christian

--- Решение от Лорана ---

Да, это то, что я хочу, к сожалению, VS.NET 2010 / Blend 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 в коде позади ...

1 Ответ

0 голосов
/ 20 апреля 2010

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

Visibility = {Binding RelativeSource = {RelativeSource Self}, конвертер = {StaticResource BoolViz}}

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

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

Ура, Laurent

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...