[英]External UserControl with Bindings in WPF/C#
因此,我有一個UserControl,它基本上是一個具有3個不同的DataGrid和一些標簽的網格。 看到我需要如何使用3次,而不是復制和粘貼代碼,我想我只需生成一次並在主窗口中使用它。
我已經將UserControl定義為:
<UserControl x:Class="Propuestas.UI.Andrei.DGMTX"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Propuestas.UI.Andrei"
mc:Ignorable="d"
Height="300"
Width="791.496">
我在窗口中這樣使用它:
<StackPanel Grid.Row="2">
<local:DGMTX/>
<local:DGMTX/>
<local:DGMTX/>
</StackPanel>
由於某種原因,它沒有顯示在我主窗口的設計器面板中。 我做錯了什么嗎?
另外,我希望能夠基於綁定元素進行綁定。 例如,假設我有一個Model類,其中包含我需要在UserControl中表示的所有數據。 我想做類似的事情
<local:DGMTX Binding = {Binding Model}/>
然后可以在其代碼中綁定UserControl中的所有其他元素。 有沒有辦法可以在XAML中做到這一點? 還是我必須以編程方式進行?
有兩種方法可以將視圖模型與控件進行通信:
正如一位評論者所建議的,將您的視圖模型綁定到用戶控件的數據上下文。 這樣可以將視圖模型中的所有內容綁定到控件的內部工作。 問題在於內部工作方式現在取決於對象與之關聯的數據。
僅為視圖模型中用戶控件實際需要的屬性創建依賴項屬性。 在所有案例中,我個人都比第一個更喜歡這種情況,因為您完全知道控件需要什么數據,並且可以以視圖模型不負責的方式以控件特有的方式操作綁定數據,因此,我個人最喜歡這種情況。
創建自己的控件時,需要注意有關設計師支持的幾件事:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.