如何在堆叠面板中更改两个按钮的颜色

时间:2017-12-27 18:07:51

标签: wpf xaml

我在stackpanel中有两个按钮,我想将一个人的背景和其他人的前景改为相同的颜色。

我在xaml中试过这个。

<StackPanel 
    Style="{DynamicResource LeftStackPanel}" 
    MouseEnter="StackPanel_MouseEnter"
    MouseLeave="StackPanel_MouseLeave"
    >
    <Button 
        x:Name="profile_rct" 
        HorizontalAlignment="Center" 
        Height="70"  
        VerticalAlignment="Center" 
        Width="7"
        Background="{Binding
                     Path=BackgroundBtn, 
                     Mode=OneWay}" 
        BorderThickness="1,1,1,1"
        BorderBrush="DimGray" />

    <Button 
        x:Name="profile_txt" 
        Content="Profil Bilgisi"
        Style="{DynamicResource LeftButton}"
        Foreground="{Binding
                     Path=BackgroundBtn, 
                     Mode=OneWay}">
        <Button.LayoutTransform>
            <RotateTransform Angle="90" />
        </Button.LayoutTransform>
    </Button>
</StackPanel>

LeftStackPanel中它只有位置参数,所以我认为它不重要。在profile_rct中,我将背景绑定到BackgroundBtn,并在profile_txt中将此相同的变量绑定到前景。在LeftButton样式中,前景没有值。

在代码中,StackPanel_MouseEnterBackgroundBtn代码。

 #region ViewModelProperty
    private Brush backgroundbtn;
    public Brush Backgroundbtn
    {
        get
        {
            return backgroundbtn;
        }

        set
        {
            backgroundbtn = value;
            OnPropertyChanged("Backgroundbtn");
        }
    }

    private void OnPropertyChanged(string v)
    {
        //throw new NotImplementedException();
    }
    #endregion
private void StackPanel_MouseEnter(object sender, MouseEventArgs e)
    {
        Backgroundbtn = Brushes.CadetBlue;
    }

这里有两个问题,即使我在stackpanel上写事件,项目的颜色只有在我指向它们时才会改变,只有尖头项目的颜色会发生变化。我想改变两个项目的颜色。

其次,它不会改变profile_txt的前景而是背景。我不明白。

2 个答案:

答案 0 :(得分:0)

在WPF中学习绑定:http://www.cheat-sheets.org/saved-copy/WpfBinding.pdf 在你的情况下:

Background="{Binding ElementName=BackgroundBtn, Path=Background, Mode=OneWay}" 

答案 1 :(得分:0)

突出的第一件事是大不相同:BackgroundBtn不是ViewModel上的属性,但Backgroundbtn是。

这是问题吗?