WPF комбинированный список с изображением в случае нулевого значения - PullRequest
0 голосов
/ 13 февраля 2011

Я хотел бы иметь комбинированный список в WPF, элементы которого имеют тип string (как по умолчанию). Единственное отличие состоит в том, что я хочу отобразить изображение (ошибку), если строка x: null. У любого есть идея, как я могу создать шаблон элемента или стиль для отображения изображения в случае пустой (или пустой) строки и строки во всех других случаях в выпадающем списке.

Спасибо!

- Карстен

Ответы [ 2 ]

2 голосов
/ 13 февраля 2011

Вот пример, который использует ItemTemplate и DataTrigger, чтобы показывать изображение, только если элемент имеет значение null:

<Grid>
    <Grid.Resources>
        <x:Array x:Key="sampleData" Type="sys:String">
            <sys:String>abc</sys:String>
            <sys:String>def</sys:String>
            <sys:String>ghi</sys:String>
            <x:Null/>
        </x:Array>
    </Grid.Resources>
    <StackPanel>
        <ComboBox ItemsSource="{StaticResource sampleData}" Text="abc">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <TextBlock Text="{Binding}"/>
                        <Image x:Name="errorImage" Source="http://thecybershadow.net/misc/stackoverflow.png" Visibility="Collapsed"/>
                    </Grid>
                    <DataTemplate.Triggers>
                        <DataTrigger Binding="{Binding}" Value="{x:Null}">
                            <Setter TargetName="errorImage" Property="Visibility" Value="Visible"/>
                        </DataTrigger>
                    </DataTemplate.Triggers>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
    </StackPanel>
</Grid>

, и это выглядит так, когда отображается четвертый нулевой элементкак изображение переполнения стека:

ComboBox with image

0 голосов
/ 14 февраля 2011

Хорошо, вот оставшаяся часть в комбинированном списке стилей (отредактируйте его копию и найдите ContenPresenter и замените на него):

                        <Grid>                         
        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" IsHitTestVisible="false" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"/>
                                <Image x:Name="errorImage" Source="/Autodesk.UtilityDesign.Electric.UI;component/Themes/Images/Error.ico" Visibility="Collapsed" Width="16"/>                     
                            </Grid>                     
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="SelectedItem" Value="{x:Null}">
                                <Setter TargetName="errorImage" Property="Visibility" Value="Visible"/>                     
                            </Trigger>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...