2011-09-21 27 views
1

我想構建一個DataGrid佈局,其中第一列的名稱將被改變。 我該怎麼辦,進入DataGridTextColumn的Header屬性來改變它?我已經看到一些例子,而不是將Header屬性連接到StaticResource中,但StaticResource是一個固定值,這對我來說不起作用,一旦我需要的是幾個值。 示例: 如何動態更改標題的DataGrid TextColumn?

  • 如果用戶選擇一個RadioButton,通過過濾小時,報頭將X
  • 如果一天的過濾器,報頭爲Y
  • 如果按月的過濾器,頭部將爲Z
  • ...

    記住,這是我需要改變的幾個例子之一。 謝謝。

    回答

    1

    這可以通過Databinding輕鬆完成。

    代碼隱藏方式

    創建你的窗口來保存字符串值的代碼隱藏的屬性;我會打電話給我的TextProp。我將假設你的窗口的元素名是這個例子中的「Window」。在DataGridTextColumn標籤中,將Header屬性綁定到該屬性。

    <DataGridTextColumn Header="{Binding TextProp, ElementName=Window}"/> 
    

    的MVVM方式

    執行上面一樣,除了把財產上的視圖模型到DataGrid綁定。在XAML更改爲:

    <DataGridTextColumn Header="{Binding TextProp}"/> 
    

    然後,所有你需要做的就是改變你選擇的任何方式,屬性值。爲了在屬性更改時更新該值,您需要實施INotifyPropertyChanged(請查看該帖子的底部)。

    +0

    感謝您的回答。我做了睾丸,它不起作用,當我將綁定設置到標題中時,標題返回null,一個白色字段。我已經實現了INotifyPropertyChanged。我在此項目中使用Page而不是 窗口。還有其他建議嗎? 在此先感謝。 –

    +0

    你的網頁是否被命名爲「網頁」?在上述綁定的ElementaName部分中,確保該值與根標記(Page)中的x:Name中的值相同。另外,請記住,如果您不給該屬性一個初始值,它將是一個空頭字符串... – CodeWarrior

    +0

    我正在使用對象類型頁(WPF)。我的網頁名字是pgFornos。在這種情況下,我使用了: MyTest屬性有一個初始值。甚至即使在這種情況下,標題也沒有改變。它始終是空白的。 –