c# - 绑定(bind)到 ScrollViewer 的 ViewportWidth 和 ViewportHeight

标签 c# wpf height width scrollviewer

我在我正在构建的 WPF 应用程序中使用模型- View - View 模型架构,我希望特定的 View 模型实际上对 View 的大小使用react(不是 MVVM 方法的正常用例,我知道)。

本质上,我有一个 ScrollViewer 对象,我希望 viewmodel 观察 scrollviewer 的宽度和高度,然后能够根据该宽度和高度做相应的事情。

我想做这样的事情:

<ScrollViewer ViewportWidth="{Binding Path=MyViewportWidth, Mode=OneWayToSource}" ViewportHeight="{Binding Path=MyViewportHeight, Mode=OneWayToSource}" />

但是当然这是不可能的,因为“ViewportWidth”和“ViewportHeight”不能被“绑定(bind)到”(也就是充当绑定(bind)目标),因为它们是只读的依赖属性(即使我没有写信给它们全部在此绑定(bind)中,因为它是 OneWayToSource)。

有人知道可以做这样的事情的好方法吗?

最佳答案

您可以尝试运行更新 View 模型的 OnLoaded 或 OnResizeChanged

private void ScrollViewer_Loaded(object sender, RoutedEventArgs e)
{
   ScrollViewer sv = sender as ScrollViewer;
   ViewModel vm = sv.DataContext as ViewModel;

   vm.ScrollViewerHeight = sv.ViewportHeight;
   vm.ScrollViewerWidth = sv.ViewportWidth;
}

关于c# - 绑定(bind)到 ScrollViewer 的 ViewportWidth 和 ViewportHeight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3266991/

相关文章:

c# - 可以让堆栈深度与某些输入大小成线性比例吗?

c# - 比较两个可空值

c# - POST 上的路由约束错误

c# - 将项目添加到在后台线程上创建的 ObservableCollection

html - 未知高度列的垂直滚动条

css 列缩小 100% 像素值

android - html 高度 100% 被 webview 忽略

c# - SqlDataAdapter.Fill 和 SqlDataReader.Read 的结果不一致

c# - 覆盖 AvalonDock 悬浮窗;忽略 zIndex

c# - 如何对 TextBox.Triggers(事件触发器)执行某些操作?