簡體   English   中英

WPF動態DataGrid標頭

[英]WPF Dynamic DataGrid headers

由於不可能使DataGrid標頭動態讀取某些資源文件,因此我在SO上找到了這里使用的方法。 它通過將TextBlock作為資源來工作,該資源正在動態讀取其他string資源。 像這樣:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTextColumn Header="{StaticResource dghName}"/>
        <DataGridTextColumn Header="{StaticResource dghAge}"/>
    </DataGrid.Columns>
</DataGrid>

在資源中,我將擁有:

<TextBlock x:Key="dghName" Text="{DynamicResource Name}"/>
<TextBlock x:Key="dghAge" Text="{DynamicResource Age}"/>

<sys:String x:Key="Name">Name</sys:String>
<sys:String x:Key="Age">Age</sys:String>

字符串資源位於某個單獨的文件中,當我僅將其交換為具有相同鍵但帶有其他某種語言的文本的其他文件時,標題就會更改。

一切都很好,直到需要在兩個地方使用相同的資源。 我在兩個TabItem具有相同的DataGrid 當我打開第一個時,標題將正常顯示,然后切換到另一個選項卡,標題也將顯示在其中。 現在,當我改回到第一個TabItem ,標題為空。 如果我先打開第二個選項卡,也會發生同樣的事情-當我切換到第一個選項卡然后又回到第二個選項卡時,標題為空。

如果我在打開第二個選項卡時沒有標題,但它們第一次顯示在兩個選項卡上,然后在我打開一個選項卡時它們消失了,那對我來說更有意義(這是第一個打開)。

資源在資源字典中,作為XAML文件。

您可以將x:Shared =“ false”屬性添加到元素。
這樣,每個數據網格都將接收其自己的資源實例,而不是嘗試共享相同的資源實例:

<TextBlock x:Key="dghName" Text="{DynamicResource Name}" x:Shared="false" />
<TextBlock x:Key="dghAge" Text="{DynamicResource Age}" x:Shared="false" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM