如何在WPF中设置网格上文本框的只读属性?

如何在WPF中设置网格上文本框的只读属性?,wpf,tabcontrol,Wpf,Tabcontrol,假设我在WPF应用程序中的TabControl上有十个文本框。我的目的是设置tabcontrol的IsReadOnly,以便将其上的每个文本框自动设置为只读。但是TabControl似乎没有IsReadOnly属性 如何实现这一点?一种方法是创建自己的tabcontrol。然后添加DependencyProperty IsReadOnly。完成后,可以将所有文本框IsReadOnly绑定到TabItem IsReadOnly。我能想到的最佳方法是:将ReadOnly属性附加到TabControl

假设我在WPF应用程序中的TabControl上有十个文本框。我的目的是设置tabcontrol的IsReadOnly,以便将其上的每个文本框自动设置为只读。但是TabControl似乎没有IsReadOnly属性


如何实现这一点?

一种方法是创建自己的tabcontrol。然后添加DependencyProperty IsReadOnly。完成后,可以将所有文本框IsReadOnly绑定到TabItem IsReadOnly。

我能想到的最佳方法是:将ReadOnly属性附加到TabControl类型:

创建新的帮助器类:

public static class TabControlHelper
{
    private static readonly DependencyProperty IsReadOnlyProperty =
        DependencyProperty.RegisterAttached("IsReadOnly", typeof(bool), typeof(TabControlHelper), new PropertyMetadata(false));
}
然后在xaml中:

<TabControl TabControlHelper.IsReadOnly="true">...</TabControl>
。。。

然后,您可以在选项卡控件的每个文本框中简单地继承该值。

您可以将文本框样式添加到选项卡控件的资源中:

        <TabControl.Resources>
            <Style TargetType="{x:Type TextBox}">
                <Setter Property="IsReadOnly" Value="{Binding IsReadOnly}" />
            </Style>
        </TabControl.Resources>

谢谢你,大卫。我要试一试。