Ich habe den folgenden Code ein "WaterMark"
TextBlock
auf jede wpf
Kontrolle für die Platzierung:Erstellen ein Wasserzeichen Templat texblock wpf
<TextBlock Text="Some Text" IsHitTestVisible="False" Foreground="Gray" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Normal">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Hidden"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=FromFrameComboBox, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
Um diese Linien für jede Steuer ich bind
will diese TextBlock
zu verhindern duplizieren, ich möchten ein UserControl
von ihm zu schaffen und es wie folgt verwendet werden:
<ComboBox x:Name="FromFrameComboBox" Grid.Row="0" Grid.Column="1" ItemsSource="{Binding OrDataContainers.ObjectsCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center"
VerticalContentAlignment="Center" VerticalAlignment="Center" SelectedItem="{Binding OrDataContainers.SelectedObject, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="0,5,0,0"/>
<Wpf:WatermarkTextBlock x:Name="FromFrameComboBoxText" Text="Select Frame Number" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
(ich die TextBlock
Definition in einer inkludiertengesetzt habenDatei, und es sieht wie folgt aus:
<TextBlock x:Class="Wpf.WatermarkTextBlock" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
IsHitTestVisible="False" Foreground="Gray" FontWeight="Normal">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Hidden"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=AvailableFrames, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
Die Sache ist die, dass die DataTrigger
an eine Steuer binded I haben derzeit in der Anwendung Ich entwickle: AvailableFrames, und wenn ich möchten diese dll
in einer anderen Anwendung wiederverwenden, muss ich die DataTrigger
Bindung ändern.
Kann so etwas getan werden?
Dank Gosha! Nur um Sie wissen zu lassen, dass die Bindung an "SelectedItem" sein sollte und dass die Rückgabewerte in der Funktion "Convert" entgegengesetzt sein sollten, geben Sie "Visible" zurück, wenn der angegebene Wert null ist. Danke noch einmal! – Idanis
behoben, für nichts :) – igorushi