想象一下:
[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>
转换器:
公共对象转换(对象值,类型targetType,对象参数,CultureInfo文化) { //这里是逻辑部分...应该返回Visibility.Collapsed:Visibility.Visible基于'对象值'值
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。
答案 0 :(得分:0)
听起来您想将当前项目传递给转换器并返回可见性。我可能没有完全理解你的意思,但如果是这样的话,这应该适合你:
Visibility = {Binding RelativeSource = {RelativeSource Self},Converter = {StaticResource BoolViz}}
“value”参数将在第一种情况下设置为ViewDocumentSearchControl,在第二种情况下设置为ViewStartControl。
那是你在找什么?
干杯, 劳伦