我们尝试绑定窗口位置,但绑定仅在加载窗口时才起作用 (我们确实看到输入的绑定代码)。 有谁知道为什么?
在视图中:
<Window Top="{Binding TopSize}">
...
</Window>
在视图模型中:
public int TopSize
{
get{return m_topSize;}
set{m_topSize=value;}
}
private onTimer()
{
m_topSize+=5;
NotifyPropertychanged("TopSize");
}
答案 0 :(得分:2)
根据 http://social.msdn.microsoft.com/Forums/en-AU/wpf/thread/82ec9358-1f20-452f-8f7a-e067c999f262 这似乎不起作用。如果框架为Window.Top设置了值,则绑定将消失。
您可以做的是实现一个Mediator / Event,它使用正确的值通知Window。然后在窗口中手动设置。
e.g。
public MainWindow()
{
InitializeComponent();
// create ViewModel and register for PropertyChanged
var viewModel = new ViewModel();
viewModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(viewModel_PropertyChanged);
this.DataContext = viewModel;
}
void viewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
// if topsize was changed set view accordingly
if (e.PropertyName == "TopSize")
{
this.Top = ((ViewModel) this.DataContext).TopSize;
}
}
答案 1 :(得分:0)
假设:
有趣的代码构造。尝试将其更改为:
public int TopSize
{
get{return m_topSize;}
set
{
if (m_topSize!=value)
m_topSize = value;
NotifyPropertychanged("TopSize");
}
}
private onTimer()
{
TopSize += 5;
}