TextBlock
цвет фона не меняется.
Я привязал свои данные к TextBlock
, который обновляется с INotifyPropertyChanged
, и конвертер срабатывает.
public class Oddsindicator : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string myPrice = "0";
string tradePrice = "0";
var colorRed = (System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#FFB0E0E6");
var colorWhite = (System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("White");
var unchanged = new SolidColorBrush(colorRed);
var changed = new SolidColorBrush(colorGreen);
if (values[0] != DependencyProperty.UnsetValue)
{
myPrice = values[0].ToString();
tradePrice = values[1].ToString();
}
if (myPrice == tradePrice)
{
return unchanged;
}
else
{
return changed;
}
}
}
XAML:
<Window.Resources>
<local:Oddsindicator x:Key="Oddsindicator" >
</local:Oddsindicator>
</Window.Resources>
<TextBlock Text="{Binding BackPrice, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" TextAlignment="Center" Margin="1" Grid.Row="4" Grid.Column="2" />
<TextBlock>
<TextBlock.Background>
<MultiBinding Converter="{StaticResource Oddsindicator}">
<Binding Path="BackPrice"/>
<Binding Path="Lasttradedprice" />
</MultiBinding>
</TextBlock.background>
</TextBlock>
Я использовал точки останова на обратном пути, и они оба стреляют. Мое связанное значение обновляется отлично. Преобразователи сравнивают значения и дают правильные результаты, просто не обновляя TextBlock
.