2016-08-05 38 views
0

Ich habe eine Toggle-Taste mit Titel, ich habe die ToggleSwitch.xaml UserControl erstellt, so dass ich sie auf mehreren Seiten verwenden kann. Alles läuft perfekt.Wie ein TextBlock-Steuerelement von WPF-Benutzersteuerelement ausblenden/deaktivieren?

Aber auf einer Seite muss ich Toggle Switch-Taste in DataGrid zeigen, so dass Benutzer den Zustand ändern können, aber wenn ToggleSwitch UserControl in der TextBox verwendet auch Platz nimmt mein Design sehr schlecht aussehen.

Ich möchte nur die Schaltfläche ToggleSwitch auf DataGrid nicht die TextBox mit etwas Text zeigen.

Ich möchte die TextBox ausblenden, damit ich mein Design nicht beeinflussen kann.

Vielen Dank, wenn jemand helfen kann, Sie können das Code-Snippet unten sehen.

<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

vielleicht könnten Sie einen Boolean in Ihrem Benutzersteuerelement hinzufügen und wenn es markiert ist, wird es Ihre Textbox verstecken –

+0

Können Sie bitte mehr @DarkTemplar erstellen? –

+0

Ich muss die XAML Ihres Benutzersteuerelements sehen, und ich werde ein Beispiel schreiben. –

Antwort

0

Sie können dies mit Dependency Properties erreichen. Binden Sie die Sichtbarkeit Ihres Textfelds an eine Abhängigkeitseigenschaft im Benutzersteuerelement.

zuerst die Abhängigkeitseigenschaft wie folgt erstellen:

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)); 

Dann in XAML wie die Eigenschaft textblock Sichtbarkeit binden unter

<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> 

Nun, wenn das Steuerelement in XAML-Wiederverwendung, die TextBlockVisibilityProperty gesetzt, während die Definition die Kontrolle wie erforderlich. Dies wird die textblock verbergen.