【发布时间】:2015-01-06 11:09:56
【问题描述】:
我有一个带有最小化控件的应用程序。最小化的项目显示在水平堆栈面板中。由于空间太小,应用程序项目的调整大小(缩小)可能会被切掉。
为了避免这种情况,我的想法是将切碎的元素移动到可扩展控件(like this)
应用程序遵循 MVVM 模式,面板中的项目位于绑定到视图模型的 ItemsControl 中。
我现在的实现是使用自定义面板,其中切碎的元素通过属性“SpillOverElements”分发。我想将另一个控件(面板、扩展器或弹出窗口)绑定到此属性。问题是我无法绑定到 ItemsControl 内“SpillOverPanel”的“SpillOverElements”属性。
<ItemsControl>
ItemTemplate="{StaticResource DummyContentDataTemplate}"
ItemsSource="{Binding DisplayElementsCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<local:SpillOverPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
所以问题是我如何绑定到“SpillOverPanel”的“SpillOverElements”属性。也欢迎任何其他如何实现这一点的想法。我不确定我的方法是否正确。
提前感谢您的帮助!
【问题讨论】:
-
为什么不扔掉
StackPanel并使用Grid将显示ScrollBar以使用户能够滚动到隐藏控件? -
有点骇人听闻,但您能否将 SpillOverElements 属性绑定到 ItemsControl.Tag 属性(通过 RelativeSource)。然后你可以将你的 StackPanel 绑定到那个。