gpt4 book ai didi

.net - 创建了可绑定(bind)的 WindowsFormsHost,但子更新未反射(reflect)到控件

转载 作者:行者123 更新时间:2023-12-04 07:25:57 25 4
gpt4 key购买 nike

我创建了一个问题,我想将控件绑定(bind)到 windowsFormsHost 控件。但众所周知, child 属性不是 DP,所以我创建了一个包装器。

/// <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;
}
}

e.NewValue 获得了我想要的控制并正确设置它,但我没有看到改变被反射(reflect)。 child 已设置,但无法看到带有新控件的 windowsFormsHost。

有人知道吗?

谢谢并恭祝安康,
凯夫84

最佳答案

您可以将 WindowsFormsHost 包装在 ContentControl 中,并通过绑定(bind)设置其 Content 属性,而不是创建包装器。这样可以避免 WindowsFormsHosts Child 属性不是依赖属性的问题。

XAML 中的类似内容:

<ContentControl Content="{Binding MyWindowsFormsHost}" />

..这在你的代码隐藏中:
public WindowsFormsHost MyWindowsFormsHost
{
get { return new WindowsFormsHost(){Child=myWinformsControl}; }
}

关于.net - 创建了可绑定(bind)的 WindowsFormsHost,但子更新未反射(reflect)到控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11510031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com