Pergunta

Eu tenho um modelo de controle com um botão de alternância. Este ToggleButton tem o seu IsChecked forma propriedade de um ligado a uma propriedade dependência. Se eu definir a propriedade dependência explicitamente os trabalhos de ligação.

O problema é que depois I interagem com o botão de alternância na interface do usuário, as ligações não atualizar a propriedade IsChecked se eu definir a propriedade de dependência explicitamente.

Eu tenho um espalhados trabalho usando TwoWay vinculativo que funciona bem. A minha pergunta é, por que ele se comporta dessa maneira? Estou esquecendo de algo? Existe um bug no mecanismo de ligação do Silverlight?

EDIT PARA INCLUIR trecho:

A ligação na ControlTemplate é algo como (poderia ser substituído com TemplateBinding)

<ToggleButton x:Name="PlayPause" Grid.Column="0" 
              IsChecked="{Binding Paused, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
              HorizontalAlignment="Center"
              Width="50" Height="50"/>

A definição explícita de propriedade de dependência é o bastante bog padrão:

myComponent.Paused = true;
Foi útil?

Solução

WPF exclui uma vinculações forma quando a propriedade de destino (IsChecked neste caso) é modificado. Silverlight usada para manter a ligao quando IsChecked foi modificado. Se pausa mais tarde foi definido, este valor sobrescreveria IsChecked também.

De acordo com você, parece Silverlight revertido ao comportamento WPF. Ah bem. Pessoalmente, considero modificar uma propriedade Binded um bug. Se as propriedades não são destinadas a ser no comando sync pode ser uma solução melhor.

Outras dicas

  1. Você deve usar ligação TwoWay
  2. Certifique-se de que o objeto que contém os suportes de propriedade em pausa INotifyPropertyChanged.
  3. Certifique-se de que o setter para Pausada dispara o evento PropertyChanged
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top