У меня есть интерфейс IFooBar
и некоторые его конкретные реализации, FooBarOne
и FooBarToo
.
public interface IFooBar
{
int Value { get; set; }
}
public class FooBarOne : IFooBar { ... }
public class FooBarTwo : IFooBar { ... }
Я добавил DependencyProperty
(называемый FooBar
) типа IFooBar
для пользовательского элемента управления MyControl
.
public static readonly DependencyProperty FooBarProperty = ...
public IFooBar FooBar
{
get { return (IFooBar)GetValue(FooBarProperty ); }
set { SetValue(FooBarProperty, value); }
}
Когда бы ни использовался этот элемент управления, я могу создавать экземпляры FooBarOne
или FooBarTwo
в качестве ресурсов stati c, а затем использовать их для установите FooBar
DependencyProperty
для экземпляров MyControl
, и все это работает, как и ожидалось.
<UserControl.Resources>
<ResourceDictionary>
<ns:FooBarOne x:Key="MyFooBarOne" Value="1"/>
<ns:FooBarTwo x:Key="MyFooBarTwo" Value="2"/>
</ResourceDictionary>
</UserControl.Resources>
...
<controls:MyControl FooBar="{StaticResource MyFooBarOne}"/>
<controls:MyControl FooBar="{StaticResource MyFooBarTwo}"/>
Я борюсь с тем, что теперь мне нужно привязать значение из ViewModel к свойство IFooBar.Value
.
Я попытался добавить в свои ресурсы следующее:
<UserControl.Resources>
<ResourceDictionary>
<ns:FooBarOne x:Key="MyFooBarOne" Value="{Binding SomeViewModelProperty}"/>
<ns:FooBarTwo x:Key="MyFooBarTwo" Value="{Binding SomeViewModelProperty}"/>
</ResourceDictionary>
</UserControl.Resources>
Но это не работает, потому что IFooBar.Value
не является DependencyProperty
.
Я понимаю, что, возможно, мог бы добавить новый DependencyProperty
для IFooBar.Value
к своему MyControl
, но на самом деле IFooBar
фактически содержит множество свойств, и я хотел избежать создания нового DependencyProperty
для каждого свойств IFooBar
.
Есть ли способ привязать свойство ViewModel к свойствам моего IFooBar
instanc эс