Frage

Ich mag einige der Elemente in Abhängigkeit von einer Eigenschaft eines Objekts fett sein, ich in die Listbox bin setzen.

Ich glaube, Sie es mit wechselnden Vorlagen tun können, aber können nicht scheinen, um ein Beispiel zu finden.

Danke!

War es hilfreich?

Lösung

Sie können es einfacher als dass, wenn Sie einen Konverter (IntToFontWeightConverter, zum Beispiel).

ein Element Vorlage ein:

 <DataTemplate x:Key="BoldTemplate">
    <TextBlock
        FontWeight="{Binding Path=Position, Converter={StaticResource IntToFontWeightConverter}}"
        Text="{Binding Path=Name}" 
        />
</DataTemplate>     

, wobei der Name ist das, was Sie anzeigen möchten, und Position ist Ihr Eigentum, dass Sie die fett / normal auf sich zu stützen.

Ihre eigenen Wandler (abhängig von der Art der Immobilie, die Sie die fett gedruckten Basis auf).

class IntToFontWeightConverter :IValueConverter 
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if ((int)value == 1)
        {
            return FontWeights.Bold;
        }

        return FontWeights.Normal;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

Andere Tipps

Sie können dies mit DataTriggers tun. Für ein einfaches Beispiel für einen Datatrigger verwenden, können Sie überprüfen http://manicprogrammer.com/cs/blogs/willeke/archive/2007/04/25/datatriggers-are-very-cool.aspx

Hier ist ein Beispiel eines Listview verwenden, aber die gleiche Sache applys zu einer Listbox.

<ListView x:Name="Notes" Margin="4,4,4,4" 
   ItemsSource="{Binding Path=CurrentCustomer.CustomerNotes}"
   ItemTemplate="{DynamicResource CustomerNotesDataTemplate}" 
   Style="{DynamicResource ListViewStyle1}" />

Dann ist die ItemTemplate in meinem Fenster der Ressourcen:

        <DataTemplate x:Key="CustomerNotesDataTemplate">
            <Grid MinWidth="400" Style="{DynamicResource NotesRowTriggers}">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="74"/>
                    <ColumnDefinition Width="400"/>
                    <ColumnDefinition Width="125"/>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <TextBlock HorizontalAlignment="Stretch" VerticalAlignment="Top" Text="{Binding Path=NoteDate, Converter={StaticResource ShortDateConverter}}" Margin="0,0,4,0" />
                <TextBlock Text="{Binding Path=FreeNote}" Grid.Column="1" HorizontalAlignment="Stretch" Margin="4,0,0,0" Grid.ColumnSpan="1" TextWrapping="Wrap" />
                <TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Path=NoteUser}" Grid.Column="2" Width="110" d:LayoutOverrides="Width" Margin="4,0,0,0" Grid.ColumnSpan="1" />
                <CheckBox HorizontalAlignment="Left" IsChecked="{Binding Path=Highlight}" VerticalAlignment="Top" Content="Important" Grid.Column="3" Margin="4,0,4,0"/>
                <CheckBox HorizontalAlignment="Left" IsChecked="{Binding Path=Important}" VerticalAlignment="Top" Content="Alert" Grid.Column="4" Margin="4,0,4,0"/>
            </Grid>
       </DataTemplate>

Und schließlich der Stil mit dem DataTriggers ist auch in meinem Fenster der Ressourcen.

<Style x:Key="NotesRowTriggers" TargetType="{x:Type Grid}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding Path=Important}" Value="True">
            <Setter Property="Background">
                <Setter.Value>
                    <SolidColorBrush Color="Red" Opacity="0.3" />
                </Setter.Value>
            </Setter>
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=Highlight}" Value="True">
            <Setter Property="Background">
                <Setter.Value>
                    <SolidColorBrush Color="Red" Opacity="0.6" />
                </Setter.Value>
            </Setter>
        </DataTrigger>
    </Style.Triggers>
</Style>

Mein Beispiel ist wahrscheinlich viel ausführlicher als es sein muss, aber ich zog es nur gerade von einem meines apps.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top