簡體   English   中英

WPF-將VM屬性綁定到UI對象的方法

[英]WPF - Binding a VM property to a method of an UI object

這與人們通常所做的事情完全相反,因此我能找到的每條信息都是關於將UI屬性綁定到VM方法的。

TL; DR

MVVM。 VM中的代碼,這種方法通過通常的命令委托來管理按鈕的單擊; 在這種情況下,我與UI完全分開並且正確分開了。 但是...從這里,我需要在此VM實例綁定到的UI容器內的UI控件上調用方法。 這怎么可能? 我可以通過某種方式將屬性添加到VM中,使屬性值在XML中綁定到我需要調用的方法嗎?


編輯更好地解釋

用戶按下“打印”按鈕。 VM接收命令。 真的是MVVM。 VM對UI一無所知。 我想嘗試不破壞MVVM范例。

現在,用戶按下“打印”按鈕是因為他想在紙上獲得UI上許多Usercontrol的精確副本,因此我必須在每個方法上調用一個方法,使我返回其位圖表示形式。 這些用戶控件未公開“ Bitmap”屬性,我需要調用其方法。

您可以創建一個名為IBitmapProvider或類似名稱的接口。 給它一個類似GetBitmap()的方法。 讓您的視圖繼承此接口。 將接口傳遞到視圖模型的構造中。 在命令上調用IBitmapProvider方法。

沒有一個更具體的問題,包括一個清晰的,最小的,完整的和可驗證的代碼示例 ,可以清楚地顯示您要執行的操作,就無法確定最佳答案是什么。 那說...

您的視圖模型不是應該處理print命令的模型。 您的觀點應該可以解決這個問題。 使用ApplicationCommands.Print或等效的命令,在視圖中為視圖中的Executed事件處理程序創建命令綁定。 視圖模型完全不需要了解打印。

此外,您提到使用位圖,但實際上也不需要這樣做。 打印API允許您直接打印Visual 首先將Visual渲染為位圖,然后再打印位圖是一種浪費,並且還會使嘗試將您期望的輸出分辨率與打印機的實際分辨率相匹配而造成麻煩。

您可以直接打印實際的UI Visual對象,也可以使用與視圖相同的模板在新的ContentControl引用現有的視圖模型,必要時甚至可以使用特定於打印的模板。 有很多種方法可以做到這一點。 您可以在另一個問題中提供的答案中找到一個簡單的示例。

暫無
暫無

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

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