【发布时间】:2009-05-20 03:17:24
【问题描述】:
我有一个 ComboBox,我想在 ItemsSource 属性为空时更改它的外观。当它处于该状态时,我想显示一个 TextPanel,其中包含“检索数据”文本,并使其看起来类似于带水印的文本框。
我认为要做到这一点,我需要一个 ControlTemplate 和一个触发器。我在这里有 ControlTemplate:
<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>
但我的问题是如何设置触发器以在 ItemsSource 属性为空时显示此内容?我尝试了几种不同的方法,每种方法都给了我错误消息“无法将值'ItemsSource'分配给属性'Property'。无效的PropertyDescriptor值。”。我的 ComboBox xaml 是这样的(包括尝试的触发器):
<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>
现在触发器应该在 ComboBox 上还是在 ControlTemplate 上?如何访问 ComboBox 的 ItemsSource 属性?我什至应该使用触发器吗?
谢谢!
【问题讨论】: