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