Представьте себе:
[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 в коде позади ...