无法禁用自定义控件中的特定文本块

本文关键字:文本 自定义控件 | 更新日期: 2023-09-27 18:28:23

我有一个自定义控件,它包含一个文本块、一个组合框和一个超链接按钮。

<UserControl x:Class="IXExpress.Controls.WorkspaceIndexes"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:telerikSdk="http://schemas.telerik.com/2008/xaml/presentation"
    mc:Ignorable="d"
    Height="Auto" Width="Auto">
    <Grid x:Name="LayoutRoot">
        <StackPanel Orientation="Vertical" HorizontalAlignment="Center">                        
            <TextBlock x:Name="IndexNameTextBlock" Text="{Binding ApplicationStrings.SelectIndexName, Source={StaticResource ResourceWrapper}, Mode=OneTime}" Margin="3,5" TextAlignment="Left" VerticalAlignment="Center" Visibility="Visible"/>
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                <telerikSdk:RadComboBox x:Name="IndexNameCB"
                                        DisplayMemberPath="IndexName"
                                        HorizontalAlignment="Center"
                                        IsDropDownOpen="False"
                                        Margin="3,0,3,5"
                                        MinWidth="150"
                                        Width="150"
                                        VerticalAlignment="Center"
                                        VerticalContentAlignment="Center"
                                        Visibility="Visible"
                                        SelectionChanged="IndexNameCB_SelectionChanged"/>
                <HyperlinkButton x:Name="CreateNewIndexLink"
                                 Content="Create New"                                
                                 VerticalContentAlignment="Center"
                                 Click="CreateNewIndexLink_Click"/>
            </StackPanel>
        </StackPanel>
    </Grid>
</UserControl>

我在另一个页面上使用它如下:

<StackPanel Orientation="Vertical">
    <customControls:WorkspaceIndexes x:Name="WorkspaceIndexes" IsMoreTextRequired="True" Margin="3"/>
</StackPanel>

问题是,在某些情况下,当我想禁用这个控件,但它只禁用组合框和超链接按钮。

代码:

if (my condition)
    WorkspaceIndexes.IsEnabled = true;
  else
    WorkspaceIndexes.IsEnabled = false;

结果:

https://i.stack.imgur.com/9u5Og.jpg

我也没有看到"IndexNameTextBlock"文本块的IsEnabled选项,为什么?

无法禁用自定义控件中的特定文本块

您看不到TextBlockIsEnabled属性,因为它没有属性。其他元素源自Control,可以启用和禁用它们文本块不是控件禁用TextBlock将毫无意义。它只是显示文本。无法进行用户交互。

如果需要将其变灰,则必须更改其Foreground颜色,或减小其Opacity颜色,或在其上放置半透明矩形/边框。