【问题标题】:How to find out if ComboBox item is in dropdown list or inside it如何确定 ComboBox 项目是在下拉列表中还是在其中
【发布时间】:2017-12-11 13:11:38
【问题描述】:

我希望 ComboBox 中的选定项目看起来与下拉列表中的实例不同。

    <ComboBox ItemsSource="{Binding ViewList}" SelectedItem="{Binding SelectedView}">
        <ComboBox.Resources>
            <DataTemplate DataType="{x:Type vm:View}">
                <StackPanel Orientation="Horizontal">
                    <c:Icon x:Name="Icon" IconShape="{DynamicResource z.Users}" Margin="5,0" Background="{Binding Foreground, RelativeSource={RelativeSource Self}}"/>
                    <StackPanel>
                        <StackPanel>
                            <TextBlock x:Name="CurrentView" Text="Current View"
                                       Foreground="{DynamicResource Pallete.Primary.Brighter}"
                                       Visibility="{Binding IsSelected, Converter={StaticResource bool2VisibilityConverter}}"/>
                            <TextBlock x:Name="Title" Text="{Binding Title}"/>
                        </StackPanel>
                    </StackPanel>
                </StackPanel>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding Type}" Value="SeparatorView">
                        <Setter TargetName="Icon" Property="Visibility" Value="Collapsed"/>
                        <Setter TargetName="Title" Property="FontWeight" Value="Bold"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Type}" Value="YearView">
                        <Setter TargetName="Icon" Property="IconShape" Value="{DynamicResource z.Bookmark}"/>
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </ComboBox.Resources>
    </ComboBox>

我可以在CurrentView 的可见性属性或触发器中使用什么东西吗?

【问题讨论】:

标签: wpf combobox styles datatemplate


【解决方案1】:

这是一个示例,您可以在使用DataTriggerComboBox 中选择TextBlock 时修改Foreground

<ComboBox ItemsSource="{Binding ListOfStrings}">
    <ComboBox.Resources>
        <DataTemplate DataType="{x:Type sys:String}">
            <TextBlock x:Name="txt" Text="{Binding}" Foreground="Red" />
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ComboBoxItem}}" Value="{x:Null}">
                    <Setter TargetName="txt" Property="Foreground" Value="Green"/>
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </ComboBox.Resources>
</ComboBox>

我相信您正在寻找以下内容:

<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ComboBoxItem}}" Value="{x:Null}">

【讨论】:

  • 对不起,完全忘记了这个问题。我问这个的时候是星期五。
猜你喜欢
  • 1970-01-01
  • 2011-08-20
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
  • 1970-01-01
相关资源
最近更新 更多