tutorial template español data wpf mvvm binding

español - wpf data template



No se puede encontrar el origen del enlace con la referencia ''RelativeSource FindAncestor'' (1)

DataGridTemplateColumn no es parte del árbol visual o lógico, y por lo tanto no tiene un antecesor vinculante (o cualquier ancestro) por lo que RelativeSource no funciona.

En su lugar, debe darle al enlace la fuente explícitamente.

<UserControl.Resources> <local:BindingProxy x:Key="proxy" Data="{Binding}" /> </UserControl.Resources> <DataGridTemplateColumn Visibility="{Binding Data.IsVisible, Source={StaticResource proxy}, Converter={StaticResource BooleanToVisibilityConverter}}">

Y el proxy de enlace.

public class BindingProxy : Freezable { protected override Freezable CreateInstanceCore() { return new BindingProxy(); } public object Data { get { return (object)GetValue(DataProperty); } set { SetValue(DataProperty, value); } } // Using a DependencyProperty as the backing store for Data. // This enables animation, styling, binding, etc... public static readonly DependencyProperty DataProperty = DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null)); }

Credits

Me sale este error:

Cannot find source for binding with reference ''RelativeSource FindAncestor, AncestorType=''System.Windows.Controls.UserControl'', AncestorLevel=''1''''

en este enlace:

<DataGridTemplateColumn Visibility="{Binding DataContext.IsVisible, RelativeSource={RelativeSource AncestorType={x:Type UserControl}},Converter={StaticResource BooleanToVisibilityConverter}}">

ViewModel está sentado como DataContext en UserControl. El DataContext de DataGrid (sentado en UserControl) es propiedad dentro de ViewModel, en ViewModel tengo una variable que dice si mostrar una cierta línea o no, su enlace falla, ¿por qué?

Aquí mi propiedad:

private bool _isVisible=false; public bool IsVisible { get { return _isVisible; } set { _isVisible= value; NotifyPropertyChanged("IsVisible"); } }

Cuando se trata de la función: NotifyPropertyChanged el evento PropertyChanged null - significa que no se pudo registrar para el enlace.

Cabe señalar que tengo más enlaces a ViewModel de tal manera que funciona, aquí hay un ejemplo:

Command="{Binding DataContext.Cmd, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"