Ich habe ein ComboBox, und ich möchte sein Aussehen ändern, wenn die ItemsSource-Eigenschaft null ist. Wenn es in diesem Zustand ist, möchte ich ein TextPanel mit dem Text "Abrufen von Daten" darin anzeigen und es so aussehen lassen, dass es der Wasserzeichen-Textbox ähnelt.WPF ComboBox - zeigt etwas anderes, wenn keine Elemente gebunden sind
Ich denke, ich brauche ein ControlTemplate und einen Trigger. Ich habe das Control hier:
<ControlTemplate x:Key="LoadingComboTemplate" TargetType="{x:Type ComboBox}">
<Grid>
<TextBlock x:Name="textBlock" Opacity="0.345" Text="Retrieving data..." Visibility="Hidden" />
</Grid>
<!--
<ControlTemplate.Triggers>
<Trigger Property="ComboBox.ItemsSource" Value="0">
<Setter Property="Visibility" Value="Visible" />
</Trigger>
</ControlTemplate.Triggers>
-->
</ControlTemplate>
aber mein Problem ist, wie kann ich den Trigger gesetzt, dies zu zeigen, wenn die Itemssource-Eigenschaft null ist? Ich habe verschiedene Methoden ausprobiert, und jeder Weg hat mir die Fehlermeldung "Value 'ItemsSource' kann nicht zugewiesen werden Eigenschaft 'Eigenschaft'. Ungültiger PropertyDescriptor Wert.". Mein ComboBox XAML ist dies (einschließlich der versuchten Trigger):
<ComboBox Margin="112,35,80,0"
Name="MyComboBox"
Height="22.723"
VerticalAlignment="Top"
DisplayMemberPath="FriendlyName"
SelectedValuePath="Path"
TabIndex="160"
>
<Trigger>
<Condition Property="ItemsSource" Value="0" />
<Setter Property="Template" Value="{StaticResource LoadingComboTemplate}" />
</Trigger>
</ComboBox>
sollte nun der Auslöser gehen auf der ComboBox, oder auf dem Control? Wie greife ich auf die ItemsSource-Eigenschaft der ComboBox zu? Sollte ich sogar einen Auslöser benutzen?
Danke!
Dank Ray, hat perfekt funktioniert. – slugster