У меня есть пользовательский элемент управления WPF с DependencyProperty MyString
Я использую элемент управления в ItemsControl на моем View и хочу получить значение из ViewModel.
Поскольку DataContext элемента управления становится каждым элементом в ItemsSource элемента ItemsControl, я подумал, что просто смогу использовать FindAncestor, но, похоже, он не работает ... Может кто-нибудь увидеть, где я ошибаюсь, пожалуйста?
Вот XAML на виде ...
<Grid>
<ItemsControl ItemsSource="{Binding MyItems}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Name="myStack">
<ImportExceptions:ControlStrip MyString="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ItemsControl}}, Path=DataContext.MyStringOnViewModel}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
и вот код моего пользовательского элемента управления, в котором я установил свойство зависимости ...
public partial class ControlStrip
{
public ControlStrip()
{
InitializeComponent();
}
public string MyString
{
get
{
return GetValue(MyStringProperty).ToString();
}
set
{
SetValue(MyStringProperty, value);
}
}
public static readonly DependencyProperty MyStringProperty =
DependencyProperty.RegisterAttached("MyString", typeof (string), typeof (ControlStrip));
}