.net - Se creó un Bindable WindowsFormsHost, pero la actualización secundaria no se refleja para controlar
wpf binding (1)
En lugar de crear un contenedor, podría envolver WindowsFormsHost en un ContentControl y establecer su propiedad Content a través de un enlace. De esta forma evitará el problema con la propiedad WindowsFormsHosts Child que no sea una propiedad de dependencia.
Algo como esto en XAML:
<ContentControl Content="{Binding MyWindowsFormsHost}" />
..y esto en tu código subyacente:
public WindowsFormsHost MyWindowsFormsHost
{
get { return new WindowsFormsHost(){Child=myWinformsControl}; }
}
Creé me encontré con un problema en el que quiero vincular un control a un control de WindowsFormsHost. Pero como todos sabemos, la propiedad Child no es un DP, así que creé un contenedor.
/// <summary>
/// Bindable version of windows form hosts
/// </summary>
public class BindableWindowsFormsHost : WindowsFormsHost
{
/// <summary>
/// Max value of the textbox
/// </summary>
public Control BindableChild
{
get { return (Control)GetValue(BindableChildProperty); }
set
{
SetValue(BindableChildProperty, value);
}
}
// Using a DependencyProperty as the backing store for Max. This enables animation, styling, binding, etc...
public static readonly DependencyProperty BindableChildProperty =
DependencyProperty.Register("BindableChild", typeof(Control), typeof(BindableWindowsFormsHost), new FrameworkPropertyMetadata(new PropertyChangedCallback(OnBindableChildChanged)));
/// <summary>
/// Handles changes to the FlyoutWindowSize property.
/// </summary>
private static void OnBindableChildChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((WindowsFormsHost)d).Child = e.NewValue as Control;
}
}
El e.NewValue obtiene el control que quiero y lo establece correctamente, PERO no veo el cambio reflejado. El elemento secundario está configurado, pero no puede ver el elemento WindowsFormsHost con un nuevo control.
¿Alguien tiene idea?
Gracias y Saludos, Kev84