绑定自定义 DataGridHeader MVVM
Bind Custom DataGridHeader MVVM
我正在尝试在 DataGrid
的 Header
中绑定 TextBlock
。但是,它似乎没有约束力。我已经尝试将 DataContext 设置为 root Grid
之一,但它没有解决问题。
例子如下:
VIEW
<Window
...
Title={Binding Title}>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" />
<DataGrid Grid.Row="1" x:Name="root">
<DataGrid.Columns>
<DataGridTextColumn>
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
查看模型
public class MainWindowViewModel : BindableBase
{
private string _title;
public string Title
{
get { return _title; }
set { SetProperty(ref _title, value); }
}
public MainWindowViewModel()
{
Title = "Initial header";
}
}
结果
我想要的是能够在TextBox
中写入并更改header。不过好像是没有绑定的。
我认为问题出在 DataContext,但我无法修复它。
谢谢
解决方案是将 dataContext 绑定到祖先。
<TextBlock DataContext="{Binding RelativeSource={RelativeSource AncestorType=DataGrid, Mode=FindAncestor}, Path=DataContext}" Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" />
我留在这里。
我正在尝试在 DataGrid
的 Header
中绑定 TextBlock
。但是,它似乎没有约束力。我已经尝试将 DataContext 设置为 root Grid
之一,但它没有解决问题。
例子如下:
VIEW
<Window
...
Title={Binding Title}>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" />
<DataGrid Grid.Row="1" x:Name="root">
<DataGrid.Columns>
<DataGridTextColumn>
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
查看模型
public class MainWindowViewModel : BindableBase
{
private string _title;
public string Title
{
get { return _title; }
set { SetProperty(ref _title, value); }
}
public MainWindowViewModel()
{
Title = "Initial header";
}
}
结果
我想要的是能够在TextBox
中写入并更改header。不过好像是没有绑定的。
我认为问题出在 DataContext,但我无法修复它。
谢谢
解决方案是将 dataContext 绑定到祖先。
<TextBlock DataContext="{Binding RelativeSource={RelativeSource AncestorType=DataGrid, Mode=FindAncestor}, Path=DataContext}" Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" />
我留在这里。