WPF页面菜单更改按钮颜色

WPF页面菜单更改按钮颜色,wpf,mvvm,datatrigger,Wpf,Mvvm,Datatrigger,我想实现一些事情,当考虑它时,似乎非常简单 我有一个MVVM应用程序,其中有一个包含多个页面/视图的窗口,顶部有一个Items按钮控件,可以将您带到各个页面。现在,我想让“当前页面”按钮改变颜色,并在页面上保持这种状态 以下是我的一些代码: <DockPanel> <Border DockPanel.Dock="Top" BorderBrush="#FAAA" BorderThickness="0,0,0,3" Background="#FDDD">

我想实现一些事情,当考虑它时,似乎非常简单

我有一个MVVM应用程序,其中有一个包含多个页面/视图的窗口,顶部有一个Items按钮控件,可以将您带到各个页面。现在,我想让“当前页面”按钮改变颜色,并在页面上保持这种状态

以下是我的一些代码:

<DockPanel>
    <Border DockPanel.Dock="Top" BorderBrush="#FAAA" BorderThickness="0,0,0,3" Background="#FDDD">
        <ItemsControl ItemsSource="{Binding PageViewModels}">
            <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button Width="75"
                            Height="30"
                            Content="{Binding Name}"
                            Command="{Binding DataContext.ChangePageCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
                            CommandParameter="{Binding }"
                            Style="{StaticResource MenuButton}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Border>

    <ContentControl Content="{Binding CurrentPageViewModel}" />
</DockPanel>

我被告知数据触发器可能会有所帮助,但我不知道如何将其实现到itemscontrol中。我是否需要将其拆分,手动显示所有按钮,然后根据名称或其他内容进行设置


谢谢,WPF已经有了一个控件来执行所描述的行为,名为。它可以被设计成类似按钮的样式,如果您喜欢它而不是常规选项卡,只需修改。下面是一些使所选选项卡变为红色的示例代码

XAML:


代码隐藏:

using System.Collections.Generic;
using System.Windows;

namespace WpfApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            DataContext = this;
        }

        public List<PageViewModel> PageViewModels
        {
            get
            {
                return new List<PageViewModel>() { new PageViewModel() { Header = "A", Content = "AAA" }, new PageViewModel { Header = "B", Content = "BBB" } };
            }
        }
    }

    public class PageViewModel
    {
        public string Header { get; set; }

        public string Content { get; set; }
    }
}
使用System.Collections.Generic;
使用System.Windows;
命名空间WpfApplication
{
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
DataContext=this;
}
公共列表页面视图模型
{
得到
{
返回new List(){new PageViewModel(){Header=“A”,Content=“AAA”},new PageViewModel{Header=“B”,Content=“BBB”};
}
}
}
公共类页面视图模型
{
公共字符串头{get;set;}
公共字符串内容{get;set;}
}
}
using System.Collections.Generic;
using System.Windows;

namespace WpfApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            DataContext = this;
        }

        public List<PageViewModel> PageViewModels
        {
            get
            {
                return new List<PageViewModel>() { new PageViewModel() { Header = "A", Content = "AAA" }, new PageViewModel { Header = "B", Content = "BBB" } };
            }
        }
    }

    public class PageViewModel
    {
        public string Header { get; set; }

        public string Content { get; set; }
    }
}