Цвет привязывающего фона не работает

спросил: 28 апреля 2018 в 09:34 в: c#

Я пытаюсь установить цвет фона некоторого значка с помощью привязки, но я, вероятно, что-то пропустил и не знаю, что.

xaml:

<materialDesign:PackIcon x:Name="SaveIcon" Kind="ContentSave" 
                         Height="25" Width="25" Background="{Binding Background}" />

Код позади:

public Page6()
{
    InitializeComponent();
    DataContext = this;
    Background = "Red";
}private string _background;
public string Background
{
    get
    {
        return _background;
    }    set
    {
        _background = value;
        OnPropertyChanged();
    }
}public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string propertyName=null)
{
        PropertyChanged?.Invoke(this , new PropertyChangedEventArgs(propertyName));
}

Но это ничего не значит, я имею в виду, что цвет фона отсутствует.


2 ответа

Есть решение
Scath ASh ответил: 28 апреля 2018 в 01:10

В классе Control уже есть свойство Brush Background. ваш string Background свойство скрывает базовое свойство, но привязка Background="{Binding Background}" все еще берет базовое свойство.

Вы можете полностью удалить string Background и использовать или переименуйте новое свойство.

public Page6()
{
    InitializeComponent();
    DataContext = this;
    BackColor = "Red";
}private string _background;
public string BackColor
{
        get
        {
            return _background;
        }        set
        {
            _background = value;
            OnPropertyChanged();
        }
}

Изменить привязку:

Background="{Binding BackColor}"
user9821580 ответил: 28 апреля 2018 в 10:27
это странно, все равно не работает
mm8 ответил: 28 апреля 2018 в 10:30
@PabloEscobar: Вы действительно привязывались к "BackColor"?
user9821580 ответил: 28 апреля 2018 в 10:33
он работает спасибо !!!!!
user9821580 ответил: 28 апреля 2018 в 10:33
отличный ответ, мне не хватает репутации
Joschka ответил: 28 апреля 2018 в 09:57

измените свойство фона на

private SolidColorBrush _background;
public SolidColorBrush Background
{
    get
    {
        return _background;
    }    set
    {
        _background = value;
        OnPropertyChanged();
    }
}

и измените Background = "Red" на Background = new SolidColorBrush(Colors.Red);

user9821580 ответил: 28 апреля 2018 в 10:33
отличный ответ, мне не хватает репутации
Joschka ответил: 28 апреля 2018 в 11:09
затем принять его как ответ, нажав галочку