Come posso implementare un comportamento allegato Blend / WPF che fa riferimento un altro controllo come proprietà?

StackOverflow https://stackoverflow.com//questions/12650492

Domanda

Sto cercando di implementare un comportamento che funziona su un oggetto, ma è influenzato da un secondo oggetto.

Ad esempio, cambierà l'aspetto dell'elemento quadro in base alla distanza di un altro elemento quadro.

Lo so abbastanza dei comportamenti allegati per essere pericolosi, e definirei la mia classe come questa:

 public class ChangeWithDistance : Behavior<FrameworkElement>
.

E da qualche parte nel comportamento avrei bisogno di una proprietà di dipendenza che indicherebbe il nome (?) dell'altro controllo.

Qual è la classe che dovrei fare della mia proprietà di dipendenza in modo che io possa avere questo comportamento indicare un altro controllo?

Sarei specificare il propE come una stringa che rappresenta il nome dell'altro controllo?

o c'è un'altra classe che dovrei usare che significa il tag associato a un controllo (sai, che x: nome business ..)

o dovrebbe essere puntato in un elemento quadro come questo?

    public static readonly DependencyProperty OtherControl =     
          DependencyProperty.Register("OtherControl", typeof(FrameworkElement)
.

o faccio qualcosa con il legame?

C'è una migliore pratica di come indicare un comportamento o in realtà tutto ciò che ha una proprietà di dipendenza su un altro controllo?

C'è un modo per farlo vedere in modo che un utente che utilizza la miscela può selezionare l'altro controllo?

È stato utile?

Soluzione

Sto avendo fortuna dichiarando la mia proprietà di dipendenza come tale:

 public static readonly DependencyProperty OtherObjectProperty =
        DependencyProperty.Register("OtherObject", typeof (FrameworkElement), typeof (MyBehavior), new UIPropertyMetadata());
.

E poi nello XAML vincolandolo all'altro oggetto sono interessato come questo:

  <Rectangle ....>
       <Interactivity:Interaction.Behaviors>
             <Controls:MyBehavior OtherObject="{Binding ElementName=TheOtherElementNameIWantToReference}" />
       </Interactivity:Interaction.Behaviors>
  </Rectangle>                   
.

Altri suggerimenti

Sono molte domande in uno.Leggere le proprietà allegate: http://msdn.microsoft.com/en-us/library/ms749011.aspx

La risposta breve è che è necessario utilizzare il metodo RegisterAttached, anziché Register.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top