Uso el control Infragistics XamDateTimeEditor y deseo agregar una propiedad de dependencia para permitir que el desarrollador elija tener todo el texto seleccionado cuando el control obtiene el foco. He creado un estilo que se utiliza para establecer el comportamiento que quiero, pero quiero que el desarrollador decida si el comportamiento se debe ejecutar en función de una propiedad de dependencia booleana. No estoy seguro de cómo se hace eso.Agregar propiedad de dependencia al control
Respuesta
Supongo que lo ha heredado de XamDateTimeEditor para esto.
Si usted puede escribir el código hace referencia a un "estándar" (CLR) Propiedad, entonces usted es bueno ir:
- declaran su DependencyProperty
eliminar su campo respaldo y sustituir la aplicación de la propiedad estándar para que acceda a DependencyProperty en lugar del campo de respaldo.
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); } } }
Entonces, cuando se accede a IsSelectOnFocusEnabled en el código devolverá el valor actual de la propiedad de dependencia.
También puede configurarlo para recibir notificaciones cada vez que cambie la propiedad, pero no veo por qué lo haría en su caso.
También hay otra opción para este truco, que no usa herencia y una propiedad adjunta si lo desea.
ACTUALIZACIÓN:
bien, ya que se solicitó, he aquí una manera de lograr que para cualquier cuadro de texto. Debe ser fácil de traducir a cualquier evento que use para llevarlo a cabo con otro tipo de control.
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();
}
}
La forma de usarlo es la siguiente, por ejemplo:
<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>
Esto le muestra cómo configurar la propiedad de activar el comportamiento, y cómo enlazar a otra cosa si es necesario ser. Tenga en cuenta que este ejemplo específico no es perfecto (si lo hace, si hace clic dentro del control, el cuadro de texto tiene una lógica interna que deselecciona el texto, pero es solo un ejemplo de cómo adjuntar comportamientos a los controles mediante propiedades adjuntas)
- 1. Dependencia Lista propiedad <string> de control de usuario
- 2. Limitar propiedad de dependencia adjunta en wpf
- 3. Cuál es la diferencia entre Propiedad y Propiedad de Dependencia
- 4. Agregar borde al control WebBrowser
- 5. Agregar elemento al control Listview
- 6. Reutilizar la propiedad con el número de versión al agregar una dependencia en sbt
- 7. ¿Agregar propiedades al control WPF personalizado?
- 8. Vinculando propiedad de dependencia personalizada al estilo personalizado de WPF
- 9. Dependencia Propiedad WPF
- 10. Dependencia Propiedad dependiente de otra
- 11. Propiedad de dependencia en app.xaml.cs
- 12. Cómo agregar control de usuario al panel
- 13. ¿Debo agregar .vs10x al control de fuente?
- 14. ¿Cómo agregar un RequiredFieldValidator al control DropDownList?
- 15. Agregar atributos personalizados al control asp.NET RadioButton
- 16. OnApplyTemplate de control personalizado llamado después de devolución de llamada propiedad de dependencia
- 17. Control de usuario con elementos personalizados Propiedad de dependencia de fuente
- 18. Xcode 4: Cómo agregar biblioteca estática Objetivo Dependencia al Proyecto
- 19. Actualizando una propiedad de dependencia de otra
- 20. WPF - Vincular propiedad de imagen al control de imagen
- 21. ¿Cómo se implementa la propiedad de dependencia?
- 22. WPF ReglaDeValidación con propiedad de dependencia
- 23. Castle windor Agregar dependencia condicional
- 24. ¿Cómo puedo agregar lógica a una devolución de llamada de propiedad de dependencia existente?
- 25. Propiedad de dependencia con valor predeterminado Lanzamiento de StackOverflowException
- 26. Despliegue de Matlab: agregar archivos al control de fuente?
- 27. Agregar una carpeta existente al control de origen de TFS
- 28. Crear un proxy para una propiedad de dependencia
- 29. Cómo agregar espacio al final del valor de la propiedad
- 30. enumeración como una propiedad de dependencia en WPF
¿Qué sucede si XamDateTimeEditor no extiende DependencyObject? El código no se compilará Por ejemplo, estoy extendiendo un Comportamiento y quiero agregarle una propiedad de dependencia que no puedo. – rolls