Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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 - Fatal编程技术网

C# 将转换器绑定到转换器工厂

C# 将转换器绑定到转换器工厂,c#,wpf,C#,Wpf,我一直在试图找到一种方法,将转换器绑定到返回转换器的属性 我的代码看起来像这样 我有课 public class ConverterFactory { public IValueConverter AuthorizationToEnabledConverter { get { return converter...... } } } 我有一个

我一直在试图找到一种方法,将转换器绑定到返回转换器的属性

我的代码看起来像这样

我有课

public class ConverterFactory 
  {
    public IValueConverter AuthorizationToEnabledConverter
        {
            get
            {
                return converter......
            }
        }
  }
我有一个
UserControl
,带有资源和按钮

 <UserControl.Resources>
   <ResourceDictionary>
        <converter:ConverterFactory x:Key="ConverterFactory" b:IsDataSource="true"/>
        <ObjectDataProvider x:Key="AutCon"  ObjectInstance="{StaticResource ConverterFactory}"       
           MethodName="AuthorizationToEnabledConverter"/>
    </ResourceDictionary>
</UserControl.Resources>
<Button IsEnabled="{Binding "Value" ,Converter={StaticResource AutCon}}" >Change</Button>

改变
我希望能够将转换器绑定到某个类中返回
IValueConverter
的属性


有办法做到这一点吗?

像这样的事情怎么样:

Binding b = new Binding("AuthorizationToEnabledConverter") { Source = this.FindResource("ConverterFactory")};
this.SetBinding(YourProperty, b);
或通过XAML:

YourProperty="{Binding Source={StaticResource ConverterFactory}, Path="AuthorizationToEnabledConverter"}"
编辑:无法绑定绑定的
转换器
-属性,因为它不是
依赖属性
。另一种方法是创建自定义
标记扩展名
,如下所示:

[MarkupExtensionReturnType(typeof(IValueConverter))]
public class ConverterDispenser:MarkupExtension
{
    public IValueConverter MainConverter
    {
        get { return new TestConverter();}
    }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        //with the help of serviceProvider you can get information about the surrounding elements and maybe decide depending on those information which converter to return.
        return MainConverter;
    }
}
如何使用它:

<TextBox Text="{Binding Path=Source, Converter={local:ConverterDispenser}}""></TextBox>

你想做什么?也许他们是一个不同的,更简单的方法来做这件事。工厂的目的是什么?工厂的目的是我没有一个类与我所有的转换器。一些转换器具有注入点,这些注入点通过unity进行解析。我无法让ctor注入与xaml一起工作,所以我为此建立了一个工厂。我无法让它工作。。我有这样一个属性:IsEnabled=“{Binding”Value”,Converter=“{Binding Source={StaticResource ConterterFactory},Path=“AuthorizationToEnabledConverter”}”,所以应该将转换器绑定到它class@user2806381
转换器
不是
从属属性
。这就是为什么不能在
转换器
属性上设置任何绑定。请查看“我的编辑”以获得其他选项。@user2806381如果它解决了您的问题,请将此项标记为答案。;)