WP7: Изменить цвет переднего плана текстового блока на основе значения другого текстового блока - PullRequest
0 голосов
/ 19 декабря 2010

Скажите, у меня есть этот XAML:

<TextBlock Name="t1" Text="{Binding team1}" Foreground="White"  FontSize="32"   />
<ListBox Name="lbBooks" Width="441" Height="490" >
    <ListBox.ItemTemplate>
        <DataTemplate x:Name="d1" >
        <StackPanel Name="spMain">      
            <StackPanel Orientation="Horizontal" >                          
            <HyperlinkButton Content="{Binding BookName}" Margin="5" Width="230" TargetName="_blank" NavigateUri="{Binding BookWebsite}"/>

            <StackPanel Orientation="Vertical" HorizontalAlignment="Right" Margin="0,0,0,0" >
                <TextBlock Name="b1" Text="{Binding BookLine1}" Margin="5" Width="160" HorizontalAlignment="Right"></TextBlock>
                <TextBlock Name="b1U" Text="{Binding BookLine2}" Margin="5" Width="160" Foreground="Wheat" HorizontalAlignment="Right"></TextBlock>
                <TextBlock Name="b3" Text="{Binding BookLine3}" Margin="5" Width="160" DataContext="{Binding team1,Converter={StaticResource tbConverter}, ElementName=b3, Mode=TwoWay}"   HorizontalAlignment="Right"></TextBlock>
            </StackPanel>
        </StackPanel>       
        </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Я хочу изменить цвет переднего плана TextBlock с именем "b3" в зависимости от значения TextBlock "t1".Я знаю, что мне нужно реализовать конвертер, подобный приведенному ниже:

public class TBConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            //do I need to check against the Textblock t1 value in here?
            if (value != null && t1.Text == "Text that triggers change" ) 
            {
             //need code to change Textblock foreground color  
            }
            return null;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    } 

Итак, (1) какой код мне нужен в конвертере для изменения цвета переднего плана текстового блока b3?И (2), правильно ли я называю конвертер в текстовом блоке текстового блока "b3"?Спасибо!

1 Ответ

2 голосов
/ 19 декабря 2010

Если ваш текстовый блок b1 уже связан с переменной (здесь team1), вы также можете привязать к нему Foreground t3 с помощью конвертера:

Foreground="{Binding team1, Converter={StaticResource YourConverter}}"

и в вашем конвертере значение tema1 будет равнопередается как значение (oject):

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)              
{                  
   var team1 = valus as YourType
   if(team1 == xxx)
   {
     return newColorBrush;

   }else{

     return defaultColorBrush; //maybe from your styles etc...

   }

}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...