当前页面指示器 MVVM
在我的 WPF 应用程序中,我尝试使用 ContentControl 导航到其他“页面”。 到目前为止,我已经完成了这项工作,在我的 MainViewModel 中,我已经启动了应该成为 MainViewModel 一部分的其他视图模型。
我用这样的数据模板显示我的视图:
<DataTemplate DataType="{x:Type vm:NewsViewModel}">
<Views:NewsView />
</DataTemplate>
我有一个带有 TextBlocks 的 ItemsControl 来显示 View(models) PageName 属性,当我单击它时,它确实将“CurrentView”属性设置为相应的 ViewModel 并显示出来。所以这不是问题...但是,我现在遇到的问题是如何让文本块显示我拥有的 CurrentView,例如我希望它是另一种颜色,然后是其余的文本块,以便用户可以看到哪个视图(模型)处于活动状态。
我尝试在带有 DataTrigger 的文本块的样式中执行此操作,但这仅接受常量值,有什么想法吗?
In my WPF application I'm trying to navigate to other 'pages' using the ContentControl.
I have this working so far, in my MainViewModel I have initiated the other viewmodels that should be a part of the MainViewModel.
I display my views with a datatemplate like this:
<DataTemplate DataType="{x:Type vm:NewsViewModel}">
<Views:NewsView />
</DataTemplate>
I got a ItemsControl with TextBlocks to display the View(models) PageName property, when I click on this, it does set the 'CurrentView' property to the according ViewModel and it gets displayed. So this aint the problem... However, the issue I come across now is how to let the textblock display the CurrentView I have, for example I want it to be another color then the rest of the textblocks so the user can see which view(model) is active.
I tried to do this in the Style for the textblock with a DataTrigger but this only accepts constant values, any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么不将
ItemsControl
切换为ListBox
因为它具有内置选择功能?您可以设置它的样式,使其隐藏选择突出显示,并且看起来与您的ItemsControl
相同,并将触发器基于ListBoxItem.IsSelected
。如果您不想这样做,您可以使用 IMultiValueConverter 将当前 ViewModel 和活动 ViewModel 传递给转换器,如果项相同则返回 True,否则返回 false。
Why not switch the
ItemsControl
to aListBox
since it has built-in selection features? You can style it so it hides the selection highlight and looks the same as yourItemsControl
, and base your trigger off ofListBoxItem.IsSelected
.If you don't want to do that, you can probably use a IMultiValueConverter to pass the current ViewModel and the active ViewModel to a converter, which would return True if the items are the same, or false if not.
创建一个
IValueConverter
,该 IValueConverter 会返回所提供的视图是否为活动视图,并将其添加到 DataTrigger 的绑定中。示例转换器:
示例 xaml:
Create a
IValueConverter
that returns if the supplied view is the active view and add it to the binding of the DataTrigger.Sample Converter:
Sample xaml: