将边框样式绑定到当前用户控件



我正在开发一个向导应用程序,它有一个带有5个边框的侧菜单和一个包含应用程序屏幕(用户控件)的内容控件。

边界样式被假定为向用户指示他在向导步骤中的位置。

我写了两个边框样式-第一个是默认应用于所有边框的defolt样式。第二个(isFoucusedStyle)需要由适合当前屏幕的边框应用。

例如,当向导显示第一个屏幕时:第一个边框需要使用isFoucusedStyle,其他边框需要使用defolt样式。当用户继续下一个屏幕时,第一个边框需要恢复到默认样式,第二个边框现在将应用为FoucusedStyle。

我通过xaml在主窗口的resources下创建页面实例,方法如下:

xmlns:view="clr-namespace:App.View"
xmlns:ViewModel="clr-namespace:App.ViewModel"
<Window.Resources>
<DataTemplate DataType="{x:Type ViewModel:OpeningViewModel}">
<view:OpeningView/>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModel:PersonalDataViewModel}">
<view:PersonalDataView/>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModel:BusinessDataViewModel}">
<view:BusinessDataView/>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModel:BusinessDataViewModel}">
<view:BusinessDataView/>
</DataTemplate>

当用户单击"下一页按钮"CurrentPage更新和ContentControl开关UserControl时,我还有一个绑定到ContentControl的属性CurrentPage。

边界与用户控件之间没有任何绑定,在我当前的状态下,边界只是没有任何功能的视觉图形。

我该如何实现它?

感谢

我使用了"isFoucusedStyle"并将其配置为基于defultstyle。我在isFoucusedStyle中添加了triger,它在Border时打开。聚焦是真的。我创建了一个可以访问当前页码的转换器。在每个边界处,我将可聚焦属性绑定到转换器,并向其发送具有合适页码(由当前边界表示的页码)的"转换器参数"转换器正在检查currentPageNumber和converterParameter之间的相等性,并返回布尔结果。结果是打开(或不打开)触发器并设置所需的边框样式。无论如何,谢谢。

首先,我强烈建议您将向导建立在NavigationWindow(或包含NavigationFrame)的基础上,这将免费为您提供所有的前后导航,如果您愿意,您可以随时重新设置NavigationWindow的样式,以匹配更像向导的界面(请参阅WPF向导)。NavigationWindow/Frame还为您提供了处理页面之间转换的Navigate()方法。

为了处理导航链接(您的五个侧菜单项),我将每个链接绑定到一个View级别的ICommand,该命令用于测试我们是否需要在CanExecute中的正确页面上。设置这些边界只是{Binding CanExecute, Converter={BoolToColorConverter}}的一种情况。

在你的情况下,你可以简单地做同样的事情。设置您的命令以检查我们是否有正确的CurrentPage,并使用Converter如上所述绑定。

最新更新