Привязка из заголовка к свойству зависимости
Привет
Я хотел бы изменить заголовки столбцов DataGrid на два текстовых поля. Я создал класс и собственность Depndency: свойства myproperty, но привязка не работает. Я пробовал разные комбинации, к сожалению, не знаю, где я делаю ошибку. Пожалуйста помочь
Что я уже пробовал:
Колонка:
<extensions:CustomDataGridTextColumn HeaderStyle="{StaticResource Nagłówek2tb}" Header="Nagłówek 1" MyProperty ="Nagłówek2"/> Style: <Style TargetType="{x:Type DataGridColumnHeader}" x:Key="Nagłówek2tb"> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate > <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <TextBlock Grid.Row="0" Text="{Binding}" TextWrapping="Wrap"/> <TextBlock Grid.Row="1" Text="{Binding MyProperty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridTextColumn}}"/> </Grid> </DataTemplate> </Setter.Value> </Setter> </Style>
Класс
public class CustomDataGridTextColumn : System.Windows.Controls.DataGridTextColumn { public string MyProperty { get { return (string)GetValue(MyPropertyProperty); } set { SetValue(MyPropertyProperty, value); } } public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(string), typeof(CustomDataGridTextColumn), new UIPropertyMetadata("")); }
Graeme_Grant
какую ошибку выдает окно вывода отладки в VS?
Rakon22
Система.Окна.Ошибка данных: 4: не удается найти источник для привязки со ссылкой 'RelativeSource FindAncestor, AncestorType=' System.Окна.Управления.DataGridTextColumn', AncestorLevel= '1". BindingExpression:Path=MyProperty; DataItem=null; целевой элемент - 'TextBlock' (Name="); целевое свойство - 'Text' (type 'String')
Graeme_Grant
Я рассмотрел вторую проблему, но первая проблема, ошибка привязки, связана с:
TextBlock Grid.Row="1" Text="{Binding MyProperty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridTextColumn}}"/>
К чему ты пытаешься привязаться?
Graeme_Grant
Это может помочь: https://code.msdn.microsoft.com/windowsdesktop/Binding-of-DataGrid-column-73f80f68[^]
Rakon22
Я видел эту тему, но когда я использую DataGridTemplateColumn, то DataGrid занимает много места в оперативной памяти (200 строк 300 МБ оперативной памяти), поэтому я ищу другие решения