想像:
[RadOutlookBarItem1] [RadOutlookBarItem2] [RadOutlookBar] [CONTENCONTROL]
我想要实现的是:
用户选择RadOutlookBarItem之一 . Item的标签绑定如下:
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>
转换器:
public object Convert(object value,Type targetType,object parameter,CultureInfo culture){//这里是逻辑部分......应返回Visibility.Collapsed:Visibility.Visible基于'object value'值
System.Diagnostics.Debugger.Break();
return Visibility.Collapsed;
}
现在,逻辑上对象值始终设置为null . 所以这就是我的问题:如何将值放入RadOutlookBarItem标签的SelectedControl变量中 . 我的意思是
Tag="{Binding SelectedControl, Mode=TwoWay, VALUE='i.e.ControlName'"}
因此,我可以使用转换方法决定特定Control的可见性是设置为折叠还是可见?
帮助表示赞赏
基督教
---来自Laurent的解决方案---
是的,这就是我想要的,不幸的是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}}"/>
每当我在Blend / VS.NET中打开XAML时,我都会停止工作 . 将ValueConverter的返回值更改为Visibility.Visible,仍然相同 . 不知道 . 不管怎么说,还是要谢谢你!基督教
---我的(临时)解决方案/解决方法---
好的,我最终得到了这个解决方案:
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;
}
并在Codebehind中设置RadOutlookBarItem的.Tag ...
1 回答
听起来您想将当前项目传递给转换器并返回可见性 . 我可能没有完全理解你的意思,但如果是这样的话,这应该适合你:
Visibility = {Binding RelativeSource = ,Converter = }
“value”参数将在第一种情况下设置为ViewDocumentSearchControl,在第二种情况下设置为ViewStartControl .
那是你在找什么?
干杯,洛朗