Używam formantu Infragistics XamDateTimeEditor i chcę dodać do niego właściwość zależności, aby umożliwić programistom wybór, aby cały tekst został zaznaczony, gdy fokus zostanie ustawiony. Stworzyłem styl, który służy do ustawienia pożądanego zachowania, ale chcę, aby programista zadecydował, czy zachowanie powinno zostać wykonane w oparciu o zależną właściwość boolowską. Nie jestem pewien, jak to się robi.Dodaj właściwość zależność do kontrolowania
Odpowiedz
Zakładam, że odziedziczyłeś po tym XamDateTimeEditor.
Jeśli można napisać kod odwoływania się do „standard” (CLR) nieruchomości, to jesteś dobry, aby przejść:
- zadeklarować swój DependencyProperty
usunąć pole oporowe i zastąpić wdrażania programu standardową właściwość, aby uzyskać dostęp do DependencyProperty zamiast pola kopii.
public class MyXamDateTimeEditor : XamDateTimeEditor { public static readonly DependencyProperty IsSelectOnFocusEnabledProperty = DependencyProperty.Register("IsSelectOnFocusEnabled", typeof(bool), typeof(MyXamDateTimeEditor), new UIPropertyMetadata(false)); public boolIsSelectOnFocusEnabled { get { return (bool)GetValue(IsSelectOnFocusEnabledProperty); } set { SetValue(IsSelectOnFocusEnabledProperty, value); } } }
Wtedy, gdy masz dostęp do IsSelectOnFocusEnabled w kodzie zwróci wartość bieżącą zależność własności.
Można również ustawić, aby otrzymywać powiadomienia, gdy właściwość się zmienia, ale nie rozumiem, dlaczego miałbyś w tym przypadku.
Istnieje również inna opcja dla tej sztuczki, która nie korzysta z dziedziczenia i dołączonej właściwości, jeśli chcesz.
UPDATE:
OK, ponieważ został on wymagany, oto droga do osiągnięcia, że dla dowolnego pola tekstowego. Powinno być łatwe do przetłumaczenia na dowolne zdarzenie, które wykorzystasz do przeprowadzenia innego rodzaju kontroli.
public class TextBoxBehaviors
{
public static bool GetIsSelectOnFocusEnabled(DependencyObject obj)
{
return (bool)obj.GetValue(IsSelectOnFocusEnabledProperty);
}
public static void SetIsSelectOnFocusEnabled(DependencyObject obj, bool value)
{
obj.SetValue(IsSelectOnFocusEnabledProperty, value);
}
public static readonly DependencyProperty IsSelectOnFocusEnabledProperty =
DependencyProperty.RegisterAttached("IsSelectOnFocusEnabled", typeof(bool),
typeof(TextBoxBehaviors),
new UIPropertyMetadata(false, new PropertyChangedCallback(OnSelectOnFocusChange)));
private static void OnSelectOnFocusChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is TextBox)
{
var tb = d as TextBox;
if ((bool)e.NewValue)
{
tb.GotFocus += new RoutedEventHandler(tb_GotFocus);
}
else
{
tb.GotFocus -= new RoutedEventHandler(tb_GotFocus);
}
}
}
static void tb_GotFocus(object sender, RoutedEventArgs e)
{
var tb = sender as TextBox;
tb.SelectAll();
}
}
Sposób korzystania jest w następujący sposób, na przykład:
<Window x:Class="WpfApplication2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication2"
Title="Window1" Height="300" Width="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox Text="No Select All" x:Name="TextBox1"/>
<CheckBox Content="Auto Select"
Grid.Column="1"
IsChecked="{Binding Path=(local:TextBoxBehaviors.IsSelectOnFocusEnabled), ElementName=TextBox1, Mode=TwoWay}" />
<TextBox Grid.Row="1" Text="djkhfskhfkdssdkj"
local:TextBoxBehaviors.IsSelectOnFocusEnabled="true" />
</Grid>
</Window>
To pokazuje, jak skonfigurować właściwość, aby uaktywnić zachowanie, i jak powiązać go do czegoś innego, jeśli potrzebujesz być. Należy zauważyć, że ten konkretny przykład nie jest doskonały (jeśli przez zakładkę działa, jeśli klikniesz wewnątrz formantu, pole tekstowe ma wewnętrzną logikę, która faktycznie odznacza tekst, ale jest to tylko przykład na to, jak przywiązać zachowania do kontrolek poprzez załączone właściwości).
- 1. CMake: dodaj zależność do add_custom_command dynamicznie
- 2. Dodaj właściwość onclick do wejścia z JavaScript
- 3. Używanie profilów maven do kontrolowania wykonania kompilacji
- 4. Jak wstrzykiwać właściwość zależność używając MKOl Jedności
- 5. Maven - dodaj zależność od źródła artefaktów
- 6. Maven: dodaj zależność do słoju według względnej ścieżki
- 7. Dodaj zależność do modułu kątowego po jego utworzeniu
- 8. sbt: Dodaj zależność od biblioteki skalatest. Gdzie?
- 9. Dodaj właściwość do łańcucha json z jsonsem jsonem
- 10. Dynamicznie dodaj właściwość lub metodę do obiektu w groovy
- 11. Dodaj właściwość do obiektu zwróconego przez Sequelize FindOne
- 12. Dodaj właściwość do klasy POCO w czasie wykonywania
- 13. Używanie unique_ptr do kontrolowania deskryptora pliku
- 14. System iOS: obecny program do kontrolowania widoku
- 15. Nieruchomość Standard działa, ale właściwość zależność nie w WPF
- 16. Narzędzie do Biblioteki Zależność
- 17. Wtyczka niestandardowa Gradle: dodaj zależność od obiektu rozszerzenia
- 18. Zainstaluj pyyaml za pomocą pip/Dodaj PyYaml jako zależność pip
- 19. kontrolowania xi kleszcze wartości daty
- 20. Dodaj abiFilters do gradle właściwości
- 21. Ogólna zależność wielu do wielu
- 22. C# pole chronione jako prywatne, dodaj właściwość - dlaczego?
- 23. Używanie AppBarLayout.Behavior.DragCallback do kontrolowania przewijania zwiniętego paska narzędziowego
- 24. Korzystanie .htaccess do kontrolowania HTTPS na niektórych stronach
- 25. "Nie zaimplementowane" Wyjątek podczas używania pywin32 do kontrolowania Adobe Acrobat
- 26. Używanie zapytań o media do kontrolowania pobierania obrazów
- 27. Konwersja właściwości normalnej na zależność
- 28. jak ustawić właściwość readonly w formularzu zend dodaj element
- 29. FindElementsInHostCoordinates Względem kontrolowania przestrzeni nie całą Page
- 30. MVVM + UserControl + Zależność własności
Co zrobić, jeśli XamDateTimeEditor nie rozszerza DependencyObject? Kod nie zostanie skompilowany. Na przykład rozszerzam Zachowanie i chcę dodać do niego właściwość zależności, której nie mogę. – rolls