Как скрыть / отключить один элемент управления TextBlock из WPF usercontrol?

У меня есть кнопка Toggle с заголовком, я создал UserControl ToggleSwitch.xaml, чтобы я мог использовать их на нескольких страницах. Все идет идеально.

Но на одной странице мне нужно показать кнопку переключателя в DataGrid, чтобы пользователь мог изменить состояние, но при использовании ToggleSwitch UserControl TextBox также занимает немного места, что делает мой дизайн очень плохим.

Я просто хочу показать кнопку ToggleSwitch на DataGrid, а не TextBox с некоторым текстом.

Я хочу скрыть TextBox, чтобы не влиять на мой дизайн.

Спасибо, если кто-то может помочь, Вы можете увидеть фрагмент кода ниже.

 <StackPanel Orientation="Horizontal" x:Name="LayoutRoot" Margin="0,0,-23,0">
    <ToggleButton Name="toggleButton"  VerticalAlignment="Center" Click="ToggleButton_OnClick" IsChecked="{Binding Path=StateChecked}" Cursor="Hand" Style="{DynamicResource AnimatedSwitch}" Height="13" Width="23" Margin="0,0,0,0" />
    <TextBlock Name="tbText" Text="{Binding Path=ControlText}" VerticalAlignment="Center" Width="279" Margin="15,8,0,7"></TextBlock>
</StackPanel>

1 ответ

Вы можете добиться этого, используя Dependency Properties, Привязать видимость вашего текстового поля к свойству зависимости в пользовательском элементе управления.

Сначала создайте свойство зависимости следующим образом:

public Visibility TextBlockVisibilityProperty
{
    get { return (Visibility)GetValue(TextBlockVisibilityPropertyProperty); }
    set { SetValue(TextBlockVisibilityPropertyProperty, value); }
}

// Using a DependencyProperty as the backing store for TextBlockVisibilityProperty.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty TextBlockVisibilityPropertyProperty =
    DependencyProperty.Register("TextBlockVisibilityProperty", typeof(Visibility), typeof(MaintenancePage), new PropertyMetadata(0));

Затем в XAML связать свойство textblock видимость как ниже

<StackPanel Orientation="Horizontal" x:Name="LayoutRoot" Margin="0,0,-23,0">
    <ToggleButton Name="toggleButton"  VerticalAlignment="Center" Click="ToggleButton_OnClick" IsChecked="{Binding Path=StateChecked}" Cursor="Hand" Style="{DynamicResource AnimatedSwitch}" Height="13" Width="23" Margin="0,0,0,0" />
    <TextBlock Name="tbText" Text="{Binding Path=ControlText}" VerticalAlignment="Center" Width="279" Margin="15,8,0,7" Visibility="{Binding TextBlockVisibilityProperty}"></TextBlock>
</StackPanel>

Теперь при повторном использовании элемента управления в xaml установите TextBlockVisibilityProperty при определении управления по мере необходимости. Это скроет textblock,

Другие вопросы по тегам