[英]Binding a value converter to the object or the type
例如我有一個像這樣的視圖模型:
public class MyViewModel
{
public ObservableCollection { get; set; }
}
public abstract class Person { }
public class Employee : Person { }
public class Boss : Person { }
根據人的類型,我不會對ListItemTemplate進行一些更改。 我有一個這樣的價值轉換器:
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;
}
如何將Visibilty屬性綁定到轉換器?
我所做的事情:
<Border Visibility="{Binding Path=self, Converter={StaticResource BossVisibilityConverter}}">
<Border Visibility="{Binding Path=this, Converter={StaticResource BossVisibilityConverter}}">
如果DataContext設置為您的ViewModel實例,則請嘗試以下操作:
<Border Visibility="{Binding Converter={StaticResource BossVisibilityConverter}}">
另外,您可能想研究一個DataTemplateSelector
public class PersonDataTemplateSelector: DataTemplateSelector
{
public DataTemplate BossTemplate { get; set; }
public DataTemplate EmployeeTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
DataTemplate selectedTemplate = null;
if (item is Boss)
{
selectedTemplate = BossTemplate;
}
else
{
selectedTemplate = EmployeeTemplate;
}
return selectedTemplate;
}
}
在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或其他ItemsControl中ItemTemplateSelector的值。
<ContentPresenter Content="{Binding}"
ContentTemplateSelector="{StaticResource ResourceKey=personDataTemplateSelector}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.