Ich habe eine 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 "Retrieving data" in ihm zu zeigen, und geben Sie es ein Aussehen Art ähnlich wie das Wasserzeichen Textbox.
Ich denke, um dies zu tun, ich brauche ein ControlTemplate, und ein Auslöser. Ich habe das ControlTemplate 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 ich den Trigger einrichten, um dies zu zeigen, wenn die ItemsSource-Eigenschaft null ist? Ich habe verschiedene Möglichkeiten ausprobiert, und jede hat mir die Fehlermeldung "Der Wert 'ItemsSource' kann der Eigenschaft 'Property' nicht zugewiesen werden. Ungültiger PropertyDescriptor-Wert.". Meine ComboBox xaml ist dies (einschließlich des versuchten Auslösers):
<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>
Soll der Auslöser nun auf die ComboBox oder auf das ControlTemplate wirken? Wie greife ich auf die Eigenschaft ItemsSource der ComboBox zu? Sollte ich überhaupt einen Trigger verwenden?
Danke!