2017-10-04 167 views
0

我有一個datagrid,其列標題我想在運行時更改。我已經試過這樣的事情,但不工作將DataGrid Headers綁定到WPF MVVM中的屬性在運行時

<DatagridTextColumn Header="{Binding Path=MyNewHeader}" Binding=" {Binding Path=MyBindingProperty}" /> 

,在我的MVVM

string myHeaderProperty; 
    public string MyHeaderProperty{ 
    get{ 
    return myHeaderProperty 
    } 
    set{ 
    Set(ref myHeaderProperty, value); 
    } 

但不起作用。任何想法將不勝感激

+2

的[WPF數據網格標題文本結合]可能的複製(https://stackoverflow.com/questions/1658397/wpf-datagrid-header-text-bi nding) – ASh

+0

不起作用。視圖模型中的DataContext [0] .DisplayName是什麼? XAML能夠翻譯'DataContext [0]'嗎?我只是有一個簡單的屬性在視圖模型像這樣 '串COLUMN1;'' 公共字符串列1 { 獲得{...} 集{...} }' – KMarto

+0

試試這個https://stackoverflow.com /一個/1292254分之45430214 – Zafar

回答

0

如果你看看輸出窗口,你會看到,你可能會得到一個綁定表達式異常,因爲MyNewHeader不是你在該行中的屬性項。

所以你需要通過的RelativeSource綁定

看看下面的例子 https://wpftutorial.net/BindingExpressions.html

0

這應該工作提供了MyHeaderProperty屬於母公司DataGridDataContext,即把它綁定到父視圖模型:

<DataGridTextColumn Binding="{Binding MyBindingProperty}"> 
    <DataGridTextColumn.HeaderTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Path=DataContext.MyHeaderProperty, RelativeSource={RelativeSource AncestorType=DataGrid}}" /> 
     </DataTemplate> 
    </DataGridTextColumn.HeaderTemplate> 
</DataGridTextColumn> 
相關問題