當我重繪面板時,我正在對valueconverter中的數據進行一些重新縮放。我想將這些處理中的一部分移到視圖模型中,因爲大部分處理僅在控件大小或其他一些屬性發生更改時纔會發生。WPF:在代碼中綁定到只讀屬性
爲確保重新縮放的數據看起來可以接受,我需要在視圖模型中容器的ActualWidth
。我想將它綁定到viewmodel的一個屬性,所以當它發生改變時,我可以觸發重新縮放處理。
所有我能找到的例子都會將CLR或依賴屬性綁定到一個元素上,而不是另一種方式,而且我明顯錯過了我的理解中的一些東西來解決我該怎麼做。我已經嘗試了幾個不同的設置綁定的東西,但我沒有把它做對。
任何提示?謝謝。
在MyView的XAML:
<myItemsControl/>
在MyView的代碼背後,是這樣的:
Binding b = new Binding(MyWidthProperty);
b.Mode = BindingMode.OneWay;
b.Source = myItemsControl.Name;
.........?
和
public static readonly DependencyProperty MyWidthProperty =
DependencyProperty.Register("MyWidth", typeof(Double), typeof(MyViewModel));
在MyViewModel:
public Double MyWidth{
get { return _myWidth; }
set { _myWidth = value; ViewChanged(this); } }
我會讀一點有關的DependencyProperty。尤其是,您的對象必須是DependencyObject,並且您必須使用GetValue和SetValue方法來訪問基礎值。最後,當綁定系統訪問DP時(這點很容易忽略),你不會得到setter調用,所以你需要傳遞一個Changed處理函數作爲註冊調用的一部分。 – 2010-11-15 17:19:28