WPF条件绑定
我有一个树视图和一些其他控件,比如文本框和组合框。 文本框绑定到树视图中的选定项,如下所示:WPF条件绑定,wpf,data-binding,conditional,Wpf,Data Binding,Conditional,我有一个树视图和一些其他控件,比如文本框和组合框。 文本框绑定到树视图中的选定项,如下所示: Text="{Binding SelectedItem.Name, ElementName=groupTreeView}" 如果我的TreeView中的所有元素都有Name属性,那么这就很好了 我想知道是否有一种方法可以进行某种条件绑定,即: if SelectedItem is MyTreeType then bind else disable the element 有可能这样做
Text="{Binding SelectedItem.Name, ElementName=groupTreeView}"
如果我的TreeView中的所有元素都有Name属性,那么这就很好了
我想知道是否有一种方法可以进行某种条件绑定,即:
if SelectedItem is MyTreeType
then bind
else
disable the element
有可能这样做吗?
现在我刚刚抛出了绑定错误,这看起来有点脏。我的TreeView是数据绑定的,其中有两个不同类型的类,这就是我寻找某种条件绑定的原因
谢谢,
Raul看一看或看一看或这就是为什么在视图类中重写ToString总是一个好主意。这样做,您就可以将文本绑定到SelectedItem。这就是为什么在视图类中重写ToString总是一个好主意。这样做,您就可以将文本绑定到SelectedItem。我最终创建了一个CastingConverter,并将该类型作为参数发送进来
public class CastingConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return null;
if (parameter == null)
throw new ArgumentNullException("parameter");
var type = parameter as Type;
if (type == null)
throw new ArgumentException("parameter must be a type");
var itemType = value.GetType();
if (type.IsAssignableFrom(itemType))
return value;
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
那么我就用下面的话来说明
DataContext="{Binding SelectedItem, ElementName=groupTreeView, Converter={StaticResource CastingConverter}, ConverterParameter={x:Type vm:GroupViewModel}}"
我最终创建了一个CastingConverter,我将类型作为参数发送进来
public class CastingConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return null;
if (parameter == null)
throw new ArgumentNullException("parameter");
var type = parameter as Type;
if (type == null)
throw new ArgumentException("parameter must be a type");
var itemType = value.GetType();
if (type.IsAssignableFrom(itemType))
return value;
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
那么我就用下面的话来说明
DataContext="{Binding SelectedItem, ElementName=groupTreeView, Converter={StaticResource CastingConverter}, ConverterParameter={x:Type vm:GroupViewModel}}"
看看使用MVVM设计模式,您的绑定代码很简单,逻辑在一个可测试类中。这是更多的工作开始,但往往导致较少的问题在长期
下面是一个非常好的视频,您应该看一下:看看使用MVVM设计模式,那么您的绑定代码很简单,逻辑在一个可测试类中。这是更多的工作开始,但往往导致较少的问题在长期
这是一个非常好的视频,您应该看一看:确保它适用于显示文本,但不支持更新Name属性,如果对象上有很多属性,它也不起作用。确保它适用于显示文本,但不支持更新Name属性,如果对象上有很多属性,它也不起作用。