c# - 绑定自定义 DataGridHeader MVVM
问题描述
我正在尝试在 a 的TextBlock
内部绑定Header
a DataGrid
。但是,它似乎没有约束力。我尝试将DataContext设置为root Grid
之一,但它不能解决问题。
这是一个例子:
看法
<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
并更改标题。然而,它似乎是不受约束的。
我相信问题出在DataContext上,但我无法解决它。
谢谢
解决方案
解决方案是将 dataContext 绑定到祖先。
<TextBlock DataContext="{Binding RelativeSource={RelativeSource AncestorType=DataGrid, Mode=FindAncestor}, Path=DataContext}" Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" />
我会把它留在这里。
推荐阅读
- java - 通过邮递员测试上传端点
- aerospike - Aerospike AQL 如何计算流中的记录总和
- python - 如何从 2 个文件中提取数据并将其放入不同的文件中(一个文件中的一行,另一个文件中的另一行等等)?
- react-native - 在 facebook 和 twitter 上发布,如 instagram
- c# - ASP.NET Core - 如何注入 IOptionsMonitor
- http-headers - 由“Content-Security-Policy-Report-Only”标头发送的信任报告
- ios - 如何在没有 SwiftUI 中的 NavigationButton 的情况下导航到 NavigationView 中的另一个视图?
- facebook-graph-api - 使用 Facebook 图形 API 通过 laravel 应用程序在我的 Facebook 页面中提取评论时出错
- wordpress - 为什么我的值(来自自定义字段)被旧值(来自所述字段)覆盖?
- video-streaming - 嵌入式 iframe 从 Ant Media Server 返回无效响应