C# 将值转换器绑定到对象或类型
例如,我有一个viewmodel,其中包含以下内容:C# 将值转换器绑定到对象或类型,c#,wpf,xaml,ivalueconverter,C#,Wpf,Xaml,Ivalueconverter,例如,我有一个viewmodel,其中包含以下内容: public class MyViewModel { public ObservableCollection { get; set; } } public abstract class Person { } public class Employee : Person { } public class Boss : Person { } public object Convert(object value, Type ta
public class MyViewModel
{
public ObservableCollection { get; set; }
}
public abstract class Person { }
public class Employee : Person { }
public class Boss : Person { }
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value == null) return Visibility.Collapsed;
return value is Boss ? Visibility.Visible : Visibility.Collapsed;
}
根据人员的类型,我不希望对ListItemTemplate进行某些更改。我有这样一个值转换器:
public class MyViewModel
{
public ObservableCollection { get; set; }
}
public abstract class Person { }
public class Employee : Person { }
public class Boss : Person { }
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value == null) return Visibility.Collapsed;
return value is Boss ? Visibility.Visible : Visibility.Collapsed;
}
如何将Visibility属性绑定到转换器
我做过的事情:
<Border Visibility="{Binding Path=self, Converter={StaticResource BossVisibilityConverter}}">
<Border Visibility="{Binding Path=this, Converter={StaticResource BossVisibilityConverter}}">
如果DataContext设置为ViewModel实例,则只需尝试以下操作:
<Border Visibility="{Binding Converter={StaticResource BossVisibilityConverter}}">
在xaml中:
<controls:PersonDataTemplateSelector x:Key="personDataTemplateSelector"
BossTemplate="{StaticResource ResourceKey=BossTemplate}"
EmployeeTemplate="{StaticResource ResourceKey=EmployeeTemplate}" />
<DataTemplate x:Key="BossTemplate">
... Template here
</DataTemplate>
<DataTemplate x:Key="EmployeeTemplate">
... Template here
</DataTemplate>
... 模板在这里
... 模板在这里
然后,您可以使用personDataTemplateSelector作为ListView中ItemTemplateSelector的值,或其他一些ItemsControl
<ContentPresenter Content="{Binding}"
ContentTemplateSelector="{StaticResource ResourceKey=personDataTemplateSelector}" />
如果DataContext设置为ViewModel实例,则只需尝试以下操作:
<Border Visibility="{Binding Converter={StaticResource BossVisibilityConverter}}">
在xaml中:
<controls:PersonDataTemplateSelector x:Key="personDataTemplateSelector"
BossTemplate="{StaticResource ResourceKey=BossTemplate}"
EmployeeTemplate="{StaticResource ResourceKey=EmployeeTemplate}" />
<DataTemplate x:Key="BossTemplate">
... Template here
</DataTemplate>
<DataTemplate x:Key="EmployeeTemplate">
... Template here
</DataTemplate>
... 模板在这里
... 模板在这里
然后,您可以使用personDataTemplateSelector作为ListView中ItemTemplateSelector的值,或其他一些ItemsControl
<ContentPresenter Content="{Binding}"
ContentTemplateSelector="{StaticResource ResourceKey=personDataTemplateSelector}" />
感谢DataTemplateSelector,我用IValueConverter看错了方向。感谢DataTemplateSelector,我用IValueConverter看错了方向。