Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 将边框样式绑定到当前用户控件_Wpf_Binding_Border - Fatal编程技术网

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

Wpf 将边框样式绑定到当前用户控件,wpf,binding,border,Wpf,Binding,Border,我正在开发一个向导应用程序,它有一个带有5个边框的侧菜单和一个包含应用程序屏幕(用户控件)的内容控件 假设边框样式向用户指示他在向导步骤中的位置 我写了两种边框样式——第一种是默认应用于所有边框的defult样式。 第二个(isFoucusedStyle)需要由适合当前屏幕的边框应用 例如,当向导显示第一个屏幕时:第一个边框需要使用isFoucusedStyle,其他边框需要使用defult样式。当用户继续进入下一个屏幕时,第一个边框需要返回默认样式,第二个边框现在将应用isFoucusedSt

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

假设边框样式向用户指示他在向导步骤中的位置

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

例如,当向导显示第一个屏幕时:第一个边框需要使用isFoucusedStyle,其他边框需要使用defult样式。当用户继续进入下一个屏幕时,第一个边框需要返回默认样式,第二个边框现在将应用isFoucusedStyle

我在下一步的参考资料下的主窗口中通过xaml创建页面实例:

     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>
xmlns:view=“clr命名空间:App.view”
xmlns:ViewModel=“clr命名空间:App.ViewModel”
当用户单击“下一页按钮”CurrentPage更新和ContentControl开关UserControl时,我还有一个绑定到ContentControl的属性CurrentPage

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

我如何实现它

谢谢

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

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

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

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