Pergunta

Eu gostaria de ter um comportamento de Silverlight que é desencadeado por uma alteração em uma propriedade no modelo de exibição para minha página. Não consigo descobrir como fazer isso, no entanto.

Então, eu tenho um modelo de visão muito simples:

public class MyViewModel : INotifyPropertyChanged
{
    private bool changingProperty;
    public bool ChangingProperty
    {
        get { return changingProperty; }
        set
        {
            if (changingProperty != value)
            {
                changingProperty = value;
                NotifyPropertyChanged("ChangingProperty");
            }
        }
    }
    public string SomeProperty { get { return "SomePropertyValue"; } }

    // INotifyPropertyChanged implementation here.......
}

Este modelo de visualização é o contexto de dados para um controle do usuário que tem um bloco de texto ligado a SomeProperty:

<TextBlock x:Key="myTextBlock" Text="{Binding SomeProperty}" />

Tudo isso funciona bem. Agora eu gostaria de anexar um comportamento a myTextBlock que é desencadeado por mudanças para ChangingProperty no meu modelo de visão. O comportamento deve destacar o TextBlock, por exemplo (ou algo mais sofisticado).

Como especificar esse gatilho? Isso é possível em tudo?

Atenciosamente,

Ronald

Foi útil?

Solução

Algo como a minha resposta para um problema semelhante aqui pode ajudar.

Aqui está um exemplo de como você pode aplicar essa técnica aos seus requisitos.

<Grid.Resources>
   <local:BoolToBrushConverter x:Key="Highlighter"
    FalseBrush="Transparent" TrueBrush="Yellow" />
</Grid.Resources>

<Border Background="{Binding ChangingProperty, Converter={StaticResource Highlighter}}">
    <TextBlock x:Name="txtTarget" Text="{Binding SomeProperty}" />
</Border>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top