c# - WPF 应用程序未在运行时更新其 Window.Left 属性
问题描述
我试图让我的 wpf 应用程序在加载时占用我的右侧监视器。我的方法是创建一个存储屏幕宽度值(作为双精度值)的属性,然后将其绑定到 Window.Left 属性。但无论我做什么,应用程序窗口都不会移动到我的右侧显示器。
这是我的 xaml
<Window x:Class="Foo.FooView"
.. declarations
Title="{Binding Title}"
Left="{Binding ScreenOffset, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}"
Height="800"
Width="1920"
SnapsToDevicePixels="True">
在我的视图模型中:
public double ScreenOffset
{
get
{
return _screenOffset;
}
set
{
if (_screenOffset != value)
{
_screenOffset = value;
RaisePropertyChanged(nameof(ScreenOffset));
}
}
}
private double _screenOffset = 0.0;
public FooViewModel()
{
ScreenOffset = Application.Current.MainWindow.Width + defaultOffset;
//Application.Current.MainWindow.Width = 1920
//defaultOffset = 10.0
}
我的数据绑定适用于我的应用程序中的其他控件。唯一似乎不起作用的绑定只是 Left 属性。谁能看到我做错了什么?提前谢谢了。
解决方案
您可以尝试将以下代码放入您的视图模型中:
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public double ScreenOffset
{
get
{
return _screenOffset;
}
set
{
if (_screenOffset != value)
{
_screenOffset = value;
NotifyPropertyChanged();
}
}
}
推荐阅读
- jquery - Django - 从列表中选择许多实例/对象并将它们存储在会话中以进行支付
- python - Scrapy使用项目并将数据保存在json文件中
- primefaces - 如何在 Primefaces 数据表列中为过滤框添加工具提示描述
- python-3.x - 如何解决错误“IndexError:列表索引超出范围”?
- python - 如何使用子进程保持 xfoil 打开
- r - 切割数据(季节性成分)
- matlab - 如何定义动态命名矩阵?
- cluster-computing - 创建多头节点 hpc 集群
- kotlin - 无法在 kotlin 多平台中访问预期的类构造函数参数
- sql-server - Cmd.Parameters.Refresh 不再检索任何参数