【问题标题】:Bind Custom DataGridHeader MVVM绑定自定义 DataGridHeader MVVM
【发布时间】:2019-09-07 16:51:01
【问题描述】:

我正在尝试在DataGridHeader 内绑定TextBlock。但是,它似乎没有约束力。我尝试将 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,但我无法解决它。

谢谢

【问题讨论】:

    标签: c# wpf mvvm datagrid datacontext


    【解决方案1】:

    解决方案是将 dataContext 绑定到祖先。

    <TextBlock DataContext="{Binding RelativeSource={RelativeSource AncestorType=DataGrid, Mode=FindAncestor}, Path=DataContext}" Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" />
    

    我把它留在这里。

    【讨论】:

      猜你喜欢
      • 2015-02-15
      • 2011-05-18
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多