【发布时间】:2012-01-27 09:26:56
【问题描述】:
我正在尝试保留窗口的位置,我有以下 XAML(已删除不相关部分)
<Window x:Class="App.MainWindow"
Title="MainWindow" Name="mainWindow"
Top="{Binding Source={StaticResource Settings}, Path=Default.PositionY}"
Left="{Binding Source={StaticResource Settings}, Path=Default.PositionX}"
AllowsTransparency="True" WindowStyle="None" SizeToContent="WidthAndHeight"
Background="#01000000" Topmost="{Binding Source={StaticResource Settings}, Path=Default.AlwaysOnTop}"
MouseLeftButtonDown="mainWindow_MouseLeftButtonDown"
“设置”在 App.xaml 中定义并映射到应用设置
在 Google 上的搜索给出了几个使用我使用的方法的示例。
TopMost 的绑定完全符合预期,该值在运行之间保持不变 然而,Top 和 Left 的绑定似乎只能以一种方式工作。窗口正确地从设置中获取其位置,但在移动时,设置不会更新。 我的 Settings.Save 函数上的断点显示 Top 和 Left 属性已按预期更改。在保存之前手动将这些值复制到设置中可以正常工作。 我已经尝试明确指定 Mode=TwoWay 无效(无论如何都应该是默认的)
PositionX 和 PositionY 都是定义为 double 类型的用户设置
移动窗口是通过以下鼠标处理程序完成的
private void mainWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs args)
{
DragMove();
}
任何想法为什么两种方式绑定只能以一种方式工作?
【问题讨论】: