为什么属性的绑定不起作用?

时间:2016-03-18 15:20:01

标签: c# wpf xaml triggers styles

这是我的第一个问题所以要小心:) 我正在尝试在xaml中绑定属性(a),前景色工作(所以datagrid单元格的ref是正确的),但背景不是,我试图理解为什么,如果我尝试为了调试我的属性,程序没有输入....

(a)=
    public int CellGiorno1
    {
        get
        {
            int a = myfunctionexample(day, Username, month, year);
            return a;
            //return 0-1-2
        }
    }

(数据网格的列,如果返回的数字为1,我想为背景着色) DataGridTextColumn Header =“2”x:Name =“HeaderGG1”Binding = {Binding Desc_GG1}“CellStyle =”{StaticResource CellStyleGiorno}“/>

 (the style with the trigger that color the foreground but not the background)
    <Style x:Key="CellStyleGiorno" TargetType="DataGridCell">      
                <Setter Property="Foreground" Value="Red"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding CellGiorno1}" Value="1">
                        <Setter Property="Background" Value="Green"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>

2 个答案:

答案 0 :(得分:1)

这里的第一个问题是你的get和set方法。看看这个结构:

class Name
{
    private string _mynam = "";

    public string mynam
    {
        set
        {
            _mynam = value;
        }
        get
        {
            return _mynam;
        }
    }
}

您没有set方法,而是在get方法中设置方法。

答案 1 :(得分:0)

该属性需要附加一个更改结构的通知才能启用绑定

通常使用INotifyPropertyChanged或DependencyProperty

来完成

例如

public class myClass :INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public void ChangeCell()
    {
        PropertyChanged(this,new PropertyChangedEventArgs("CellGiorno1")
    }
    public int CellGiorno1
    {
        get
        {
            int a = myfunctionexample(day, Username, month, year);
            return a;
            //return 0-1-2
        }
    }
}

所以在这种情况下,调用ChangeCell将通知所有连接到CellGiorno1的绑定,他们需要获取CellGiorno1的值,因为它已更改