[英]MVVM binding in templates issue (specifically Expander control's HeaderTemplate)
好的,所以我有一個名為 GeneralVocabItemTemplateInput 的數據模板。 其中有一個擴展器控件。
數據模板鏈接到視圖模型,因此可以綁定各種項目。 事實上,我可以按如下方式綁定擴展器的標題文本:
<DataTemplate x:Key="GeneralVocabItemTemplateInput">
<Grid Margin="2">
<Expander Header="{Binding ID}">
這很好用。 標題文本顯示 ID 值。 關鍵是擴展器的數據上下文是我想要的視圖模型。
到目前為止一切都很好。 現在,我想要一個模板而不是 ID 作為文本,這樣我就可以進行更多的自定義。 我創建了一個數據模板,可以將其分配給 expander 的 HeaderTemplate 屬性。 所以我在我的資源字典中創建了一個如下所示:
<DataTemplate x:Key="TemplateTest">
<StackPanel>
<Border BorderThickness="1" BorderBrush="Black">
<TextBlock Margin="2" Text="{Binding ID}"/>
</Border>
</StackPanel>
</DataTemplate>
很簡單,一個設置的邊框以及與之前相同的綁定值。
我在擴展器中使用它如下:
<DataTemplate x:Key="GeneralVocabItemTemplateInput">
<Grid Margin="2">
<Expander HeaderTemplate="{StaticResource TemplateTest}">
這就是我遇到問題的地方。 出現黑色邊框,但里面什么也沒有。
顯然模板有效並且可以在邊框出現后找到,但綁定沒有。 我已經玩了一段時間,還沒有想出解決方案。
我嘗試的一件事是更改 TemplateTest 的存儲位置(數據模板)。 它位於一個單獨的資源字典文件中,因此我將它移到與原始模板 (GeneralVocabItemTemplateInput) 相同的文件中,以查看是否有所不同。 沒有不同。
我希望有人能對此有所了解。
它在我身邊工作,有以下變化:
<Expander HeaderTemplate="{StaticResource TemplateTest}" Header="{Binding}">
說明: HeaderTemplate
DataContext
設置為Header
本身(這似乎是合理的)。 當沒有設置Header
, DataContext 因此為null
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.