簡體   English   中英

模板中的 MVVM 綁定問題(特別是擴展器控件的 HeaderTemplate)

[英]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.

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