Я получаю эту ошибку:Не удается найти источник для связывания со ссылкой 'RelativeSource FindAncestor'
Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.UserControl', AncestorLevel='1''
на этом Переплет:
<DataGridTemplateColumn Visibility="{Binding DataContext.IsVisible, RelativeSource={RelativeSource AncestorType={x:Type UserControl}},Converter={StaticResource BooleanToVisibilityConverter}}">
ViewModel сидит, как DataContext в UserControl. DataContext DataGrid (сидит в UserControl) является свойством в ViewModel, в ViewModel У меня есть переменная, которая говорит, показывать ли определенную строку или нет, ее привязка не удалась, почему?
Вот моя собственность:
private bool _isVisible=false;
public bool IsVisible
{
get { return _isVisible; }
set
{
_isVisible= value;
NotifyPropertyChanged("IsVisible");
}
}
Когда речь идет о функции: NotifyPropertyChanged в нуль событие PropertyChanged - значит, что он не удалось зарегистрировать для связывания.
Следует отметить, что у меня есть больше привязок к ViewModel таким образом, что работает, вот пример:
Command="{Binding DataContext.Cmd, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
Теперь я получаю эту ошибку: Ошибка пути BindingExpression: свойство IsVisible не найдено в 'object' '' BindingProxy ' –
Упс, это должно быть Data.IsVisible. –
Отлично! Он работает наконец, большое спасибо. –