Configuré el datacontext dinámicamente en el código. Me gustaría que un botón en la pantalla se habilite/deshabilite según DataContext == null
o no. Puedo hacerlo en código cuando asigno el DataContext pero sería mejor si puedo enlazar así :)wpf cómo enlazar a la existencia de DataContext?
8
A
Respuesta
13
Debería poder usar un DataTrigger
en el estilo del botón para desactivar su botón cuando el DataContext
es nulo. La otra opción es vincular la propiedad IsEnabled
al DataContext
y usar un convertidor de valor para devolver false
si DataContext
es nulo y true
de lo contrario.
Con gatillo:
<Button>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=DataContext, RelativeSource={RelativeSource Self}}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="false"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Con convertidor:
Convertidor:
public class DataContextSetConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value != null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
y usarlo
<UserControl.Resources>
<local:DataContextSetConverter x:Key="dataContextSetConverter"/>
</UserControl.Resources>
...
<Button IsEnabled="{Binding Path=DataContext, RelativeSource={RelativeSource Self}, Converter={StaticResource dataContextSetConverter}}"/>
4
Esto debe hacerlo:
<Button Content="ButtonName">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=DataContext}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Cuestiones relacionadas
- 1. Enlazar a DataContext padre dentro DataTemplate
- 2. WPF: ¿Cómo enlazar a una propiedad anidada?
- 3. WPF Enlazar a sí
- 4. En WPF, ¿cómo enlazar datos con Window DataContext desde el DataTemplate de un ListBox contenido?
- 5. Cómo enlazar la propiedad local en el control de WPF
- 6. WPF - Cómo enlazar un DataGridTemplateColumn
- 7. ItemSource vs Datacontext en wpf
- 8. Enlazar con el conteo de elementos en el DataContext
- 9. enlazar datagrid a la lista <string[]> wpf
- 10. Cómo enlazar propiedades booleanas inversas en WPF?
- 11. Cómo enlazar SystemTray Progressbar a una propiedad en PivotItem DataContext seleccionado
- 12. Cómo enlazar datos a datos jerárquicos con un WPF TreeView?
- 13. WPF User Control DataContext es nulo
- 14. Wpf Toolkit. Enlazar encabezado de columna de DataGrid a DynamicResource
- 15. Plantillas WPF y enlace a DataContext en un GridView
- 16. ¿Actualizar DataContext para vistas en WPF?
- 17. Diferencia betwwen DataContext y ItemSource en WPF
- 18. Enlazar Colección a StackPanel
- 19. ¿Cuál es la diferencia entre DataTemplate y DataContext en WPF?
- 20. Cómo enlazar la lista a dataGridView?
- 21. wpf - datacontext de enlace a propiedades estáticas de la clase singleton
- 22. WPF: enlazar un número entero a un TextBlock con TemplateBinding
- 23. Cómo enlazar BlackoutDates en WPF Toolkit ¿Control de calendario?
- 24. WPF ¿Enlazar elementos a un diccionario por clave?
- 25. C#/WPF: Encuadernación Combobox ItemSource en Datagrid con el elemento exterior de la DataContext
- 26. Enlazar varias vistas a varios viewmodels
- 27. ¿Cómo enlazar estáticamente a TBB?
- 28. WPF Enlazar a miembros de la clase en el código detrás de la pregunta
- 29. ¿Cómo puedo enlazar a cppunit?
- 30. Enlazar una ObservableCollection a un ListView
¿Qué tal un convertidor puede verse? – katit