gpt4 book ai didi

c# - wpf 绑定(bind)不更新

转载 作者:太空宇宙 更新时间:2023-11-03 15:56:49 25 4
gpt4 key购买 nike

使用 MVVM,我有一个包含 DependencyProperty 的 View 和一个绑定(bind)到 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 保持不变。甚至我创建的测试事件也没有被触发。我做错了什么?

最佳答案

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

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

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

关于c# - wpf 绑定(bind)不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23243187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com