我有一个带标题的Toggle按钮,我创建了ToggleSwitch.xaml UserControl,以便我可以在多个页面中使用它们。每件事情都很完美。
但在一个页面中,我需要在DataGrid中显示切换开关按钮,以便用户可以更改状态,但在使用时ToggleSwitch UserControl TextBox也需要一些空间,使我的设计看起来非常糟糕。
我只想在DataGrid上显示ToggleSwitch按钮,而不是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>
答案 0 :(得分:0)
您可以使用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
。