【发布时间】:2014-11-11 18:45:51
【问题描述】:
在我的项目中,每当有新的投标价格出现时,我想更改 Datagrid 单元格的背景。 我设置它使用
public class Notifier : INotifyPropertyChanged
{
public bool BidUp
{
get { return _bidUp; }
set
{
_bidUp = value;
OnPropertyChanged("BidUp");
}
}
public double Bid
{
get { return _bid; }
set
{
BidUp = (value > this.Bid);
_bid = value;
OnPropertyChanged("Bid");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
还有我的 DataGridCell 的 xaml 代码:
<DataTemplate>
<Border x:Name="BidBoder" Background="AliceBlue" BorderThickness="0">
<TextBlock Text="{Binding Bid}" x:Name="BidTextBlock" HorizontalAlignment="Right"></TextBlock>
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding BidUp}" Value="True">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="bidUpStoryboard"/>
<StopStoryboard BeginStoryboardName="bidDownStoryboard"/>
<BeginStoryboard Name="bidUpStoryboard">
<Storyboard BeginTime="00:00:00">
<ColorAnimation
BeginTime="00:00:00"
Duration="0:0:0.1"
To="LimeGreen"
AutoReverse="True"
Storyboard.TargetName="BidBoder"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding BidUp}" Value="False">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="bidUpStoryboard"/>
<StopStoryboard BeginStoryboardName="bidDownStoryboard"/>
<BeginStoryboard Name="bidDownStoryboard">
<Storyboard BeginTime="00:00:00">
<ColorAnimation
BeginTime="00:00:00"
Duration="0:0:0.1"
To="Red"
AutoReverse="True"
Storyboard.TargetName="BidBoder"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</DataTemplate.Triggers>
现在发生的情况是,如果价格上涨后又上涨,BidUp = true--->true propertyChanged 不会触发。即使_bidUp = value 没有改变,有没有办法触发改变?
我想问一下如果Property A = somevalue 被调用,为什么OnPropertyChanged 不被调用,如果相同的值适用?
【问题讨论】:
-
你能在这里添加你的 XAML 代码吗?,
-
@FaisalHafeez 已添加,但此处与 xaml 无关。
-
你是从
INotifyPropertyChanged继承的吗?你能发布它的实现代码吗?OnNotifyPropertyChanged? -
您需要有一个实现
INotifyPropertyChanged接口的类并在该类中定义您的属性,然后它应该可以工作。
标签: c# wpf xaml inotifypropertychanged