簡體   English   中英

在WPF / C#中具有綁定的外部UserControl

[英]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中做到這一點? 還是我必須以編程方式進行?

有兩種方法可以將視圖模型與控件進行通信:

  1. 正如一位評論者所建議的,將您的視圖模型綁定到用戶控件的數據上下文。 這樣可以將視圖模型中的所有內容綁定到控件的內部工作。 問題在於內部工作方式現在取決於對象與之關聯的數據。

  2. 僅為視圖模型中用戶控件實際需要的屬性創建依賴項屬性。 在所有案例中,我個人都比第一個更喜歡這種情況,因為您完全知道控件需要什么數據,並且可以以視圖模型不負責的方式以控件特有的方式操作綁定數據,因此,我個人最喜歡這種情況。

創建自己的控件時,需要注意有關設計師支持的幾件事:

  1. 對於WPF,Visual Studio的設計師仍然有很多問題。 不相信我嗎? 嘗試在另一個主程序集中引用動態資源。 設計器將崩潰,並告訴您找不到它。 但是,這不是實際情況。 一旦運行該應用程序,您將永遠不會看到此異常。
  2. 為了查看對源所做的更改反映在設計器中,您必須首先構建項目(控件所在的項目,不一定是其引用的項目)。 有時,“清理”或(有時運氣更好)“重建”項目是在“構建”不起作用時唯一更新主項目中設計師的事情。
  3. 如果在考慮了后者之后仍然看不到任何內容,請考慮該控件的實現。 有什么地方不對嗎? 有什么意外藏起來嗎? 起初您可能並不這么認為,也許屈服和檢查可能要花十個小時的挫敗感,但這些小事情可以使一切變得不同。

暫無
暫無

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

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