2009-12-14 234 views
4

我想從我的UserControl綁定一個依賴屬性到我的MainViewModel。C#/ WPF:依賴項屬性沒有更新綁定屬性?

這是的DependencyProperty的樣子:

public static DependencyProperty ItemHasChangesProperty = DependencyProperty.Register("ItemHasChanges", 
                        typeof(bool), 
                        typeof(MyUserControl), 
                        new PropertyMetadata(null)); 
    public bool ItemHasChanges 
    { 
     get { return (bool)GetValue(ItemHasChangesProperty); } 
     set { SetValue(ItemHasChangesProperty, value); } 
    } 

我的XAML:

<local:MyUserControl ItemHasChanges="{Binding Path=Changes}" Grid.Row="4" /> 

現在,當調試和檢查「布爾變化」的set訪問,我看到它永遠不會當我在UserControl中設置ItemHasChanges = true時訪問;

任何想法我在這裏做錯了嗎?

謝謝!

乾杯

回答

9

明白了。我不得不改變

<local:MyUserControl ItemHasChanges="{Binding Path=Changes}" Grid.Row="4" /> 

<local:MyUserControl ItemHasChanges="{Binding Path=Changes, Mode=OneWayToSource}" Grid.Row="4" /> 

我花了約3小時的數字出來..哈哈:-)

乾杯

+3

我浪費了1小時(: – Mel 2012-10-21 09:22:34

+0

對於閱讀此內容的其他人員,在Universal Windows Apps中,沒有「OneWayToSource」模式。相反,我使用了'OneWay'。 – 2016-02-26 16:41:22

+0

'TwoWay'也適用,如果你需要雙向更新。這也浪費了我大約一個小時的時間,認爲我的財產沒有定下它的價值。 – Dan 2017-09-07 15:32:40

0

你直接控制設置ItemHasChanges(如,不通過更新綁定源)?如果是這樣,那將刪除綁定。

+0

無我將源代碼綁定到控件,並根據一個操作,我更改了源的值.. – 2009-12-14 15:01:25