wpf绑定不更新

时间:2014-04-23 11:39:04

标签: c# wpf mvvm

使用MVVM,我有一个包含DependencyProperty的View和一个绑定到ViewModel的ListBox:

public static readonly DependencyProperty SelectedServerProperty =
    DependencyProperty.Register("SelectedServer",typeof(object),
    typeof(ServerView), new FrameworkPropertyMetadata(test));


public object SelectedServer
{
    get { return GetValue(SelectedServerProperty); }
    set { SetValue(SelectedServerProperty, value); }
}

public ServerView()
{
    SetBinding(SelectedServerProperty, "SelectedServer");
    InitializeComponent();
}

public static void test(DependancyObject sender, DependancyPropertyChangedEventArgs e)
{
    ...
}

XAML:

<ListBox ItemsSource="{Binding Servers}" DisplayMemberPath="Name" SelectedItem="{Binding SelectedServer}" />

和实现INotifyPropertyChanged的ViewModel:

ServerModel _selectedServer;
public ServerModel SelectedServer
{
    get { return _selectedServer; }
    set 
    {
        _selectedServer = value;
        RaisePropertyChanged("SelectedServer");
    }
}

当我在列表中选择一个项目时,ViewModel会更新,但View中的DependencyProperty保持不变。甚至我创建的测试事件也没有被触发。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

我认为SetBinding正在尝试绑定到View中定义的Property而不是VM。所以尝试使用语法

SetBinding(SelectedServerProperty, new Binding("SelectedServer"));

这会尝试绑定到VM中的SelectedServer属性(View的DataContext)。Here是来自MSDN的链接,可以帮助您。