Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将值转换器绑定到对象或类型_C#_Wpf_Xaml_Ivalueconverter - Fatal编程技术网

C# 将值转换器绑定到对象或类型

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

例如,我有一个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 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看错了方向。