3
我有一個相當複雜的數據樹,我在WPF UserControl中顯示,控件使用DataTemplates創建並鏈接各種UI元素,直到樹中的各種數據。下面是其中涉及的項目是在一個ItemsControl坐在畫布上顯示的列表(非常)簡單的例子,每個元素都代表一個文本框:WPF:從數據上下文對象獲取DataTemplate元素
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox
Text="{Binding ...}"
Canvas.Left="{Binding ...}"
Canvas.Top="{Binding ...}"
/>
</DataTemplate>
</ItemsControl.ItemTemplate>
現在已經我的用戶,其中我有內部發生的事件對其中一個列表項的引用,我想將焦點設置爲它後面的TextBox項。是否有一種簡單的方法從其數據上下文綁定的數據對象中獲取TextBox元素?或者我必須自己手動走完整個視覺樹?
我意識到我可以把一個成員放入數據元素本身,並使用觸發器來做它我正在做的任何事情,但在我的情況下,它會需要一個額外的抽象層,我真的很想避免如果可能的話。
這是一個有點羞恥真的,因爲這意味着如果你正在寫一個通用的控制,並且希望用戶能夠指定綁定的數據元素,那麼你可以不只是直接綁定到他們的數據。控件必須在內部封裝它們的數據,以便它可以添加自定義數據,例如這個標誌。呃,不管。謝謝你的幫助! –
您剛剛定義了View Model的功能。這是因爲「生產級」控制需要更多的綁定和更復雜的行爲。如果沒有視圖模型來將視圖與用戶數據分開,那將會非常令人困惑。 – jimmyjambles