Próbuję zaimplementować zachowanie, które działa na obiekcie, ale ma wpływ na drugi obiekt.
Na przykład zmieni wygląd elementu ramy na podstawie odległości innego elementu ramy.
Wiem wystarczająco dużo o dołączonych zachowaniach, aby były niebezpieczne, a swoją klasę określiłbym w ten sposób:
public class ChangeWithDistance : Behavior<FrameworkElement>
A gdzieś w zachowaniu potrzebowałbym właściwości zależności, która wskazywałaby na nazwę (?) innej kontrolki.
Jaką klasę powinienem ustawić we właściwości zależności, aby to zachowanie wskazywało na inną kontrolkę?
Czy określiłbym propdp jako ciąg, który reprezentuje nazwę innej kontrolki?
A może jest inna klasa, której powinienem użyć, która oznacza tag powiązany z kontrolką (wiesz, że x:Name business...)
A może propdp powinien wskazywać na taki element frameworka?
public static readonly DependencyProperty OtherControl =
DependencyProperty.Register("OtherControl", typeof(FrameworkElement)
A może robię coś z wiązaniem?
Czy istnieje najlepsza praktyka, jak wskazać zachowanie lub naprawdę wszystko, co ma właściwość zależności na innej kontrolce?
Czy istnieje sposób, aby to się pojawiło, aby użytkownik korzystający z mieszanki mógł wybrać inną kontrolkę?
2 odpowiedzi
Mam szczęście, że deklaruję moją właściwość zależności jako taką:
public static readonly DependencyProperty OtherObjectProperty =
DependencyProperty.Register("OtherObject", typeof (FrameworkElement), typeof (MyBehavior), new UIPropertyMetadata());
A następnie w XAML wiążącym go z innym obiektem jestem zainteresowany w ten sposób:
<Rectangle ....>
<Interactivity:Interaction.Behaviors>
<Controls:MyBehavior OtherObject="{Binding ElementName=TheOtherElementNameIWantToReference}" />
</Interactivity:Interaction.Behaviors>
</Rectangle>
To dużo pytań w jednym. Przeczytaj o załączonych właściwościach: http://msdn.microsoft.com/en-us /biblioteka/ms749011.aspx
Krótka odpowiedź brzmi, że musisz użyć metody RegisterAttached
zamiast Register
.
Podobne pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.