2016-08-05 87 views
0

我有一个带标题的切换按钮,我创建了ToggleSwitch.xaml UserControl,以便我可以在多个页面中使用它们。每件事情都会变得完美。如何从WPF usercontrol中隐藏/禁用一个TextBlock控件?

但在一个页面中,我需要在DataGrid中显示切换开关按钮,以便用户可以更改状态,但是在使用ToggleSwitch UserControl时,TextBox也需要一些空间,这使得我的设计看起来非常糟糕。

我只想显示DataGrid上的ToggleSwitch按钮,而不是带有文本的文本框。

我想隐藏文本框,以便我可能不会影响我的设计。

谢谢你,如果有人可以帮忙,你可以看到下面的代码片段。

<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

你能否详细说明@DarkTemplar? –

+0

我需要看到你的用户控件的xaml,我会写一个例子。 –

回答

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

相关问题