Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

TextBlock και χρώματα.

Îåêßíçóå áðü ôï ìÝëïò plasmatek. Τελευταία δημοσίευση από το μέλος plasmatek στις 04-03-2008, 11:16. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  29-02-2008, 11:25 40604

    TextBlock και χρώματα.

    Έστω ότι έχω ένα TextBlock και το περιεχομενό του είναι bound σε κάποιο DataSource . Υπάρχει κάποιος τρόπος ώστε να μπορώ να μαρκάρω (υπογραμμίσω, εμφανίσω με άλλο χρώμα,κλπ) μια συγκεκριμένη λέξη από το περιεχόμενο του TextBlock;

     

        <TextBlock.TextEffects>
          <TextEffect PositionStart="0" PositionCount="10">
            <TextEffect.Transform>
              <TranslateTransform Y="-5" />
            </TextEffect.Transform>
          </TextEffect>
        </TextBlock.TextEffects>

    αν μπορούσα να έχω κάποιο άλλο TextEffect πέρα απο γραμμικούς μετασχηματισμούς, τότε θα μπορούσα να κάνω bound τα PositionStart και PositionCount ώστε να προσδιορίζω το μήκος και την θέση της λέξης που θέλω να μαρκάρω.

     

    Καμία ιδέα;

  •  29-02-2008, 12:13 40605 σε απάντηση της 40604

    Απ: TextBlock και χρώματα.

    Μπορείς να περάσεις το περιεχόμενο από ένα Linq to XML μετασχηματισμό και να το φορτώσεις δυναμικά κατόπιν στο TextBlock. Ρίξε μια ματιά σε αυτό το blog-post που έχω κάνει. Αναφέρεται στη δημιουργία controls αλλά είναι ίδιο πράγμα αφού μιλάμε για mark-up. Αν θυμάμαι, παίζεις με C# οπότε σε αυτή τη περίπτωση θα είναι λίγο πιο περίπλοκο για τη δημιουργία του XML block.


    Vir prudens non contra ventum mingit
  •  04-03-2008, 11:16 40696 σε απάντηση της 40605

    Απ: TextBlock και χρώματα.

    τελικά το έκανα με <TextDecoration.Pen>

    σπάω το άρχικο string σε substrings (υπογραμμισμένα και όχι υπογραμμισμένα)

    και μετά κάνω bind το Thickness για κάθε substring (0 για τα μη υπογραμμισμένα και 2 για τα υπογραμμισμένα) οπότε βγαίνει κάτι του στυλ:

            <DataTemplate x:Key="ColorTemplate2">
                <ItemsControl ItemsSource="{Binding Path=C}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel IsItemsHost="True" />
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <ItemsControl ItemsSource="{Binding Path=D}">
                                    <ItemsControl.ItemsPanel>
                                        <ItemsPanelTemplate>
                                            <StackPanel  IsItemsHost="True" Orientation="Horizontal" />
                                        </ItemsPanelTemplate>
                                    </ItemsControl.ItemsPanel>
                                    <ItemsControl.ItemTemplate>
                                        <DataTemplate>
                                            <TextBlock xml:space="default" Text="{Binding Path=Text}" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" VerticalAlignment="Center" HorizontalAlignment="Left">
                                                <TextBlock.TextDecorations>
                                                    <TextDecorationCollection>
                                                        <TextDecoration PenThicknessUnit="FontRecommended">
                                                            <TextDecoration.Pen>
                                                                <Pen Brush="Red" Thickness="{Binding Path=Val}" />
                                                            </TextDecoration.Pen>
                                                        </TextDecoration>
                                                    </TextDecorationCollection>
                                                </TextBlock.TextDecorations>
                                            </TextBlock>
                                        </DataTemplate>
                                    </ItemsControl.ItemTemplate>
                                </ItemsControl>
                            </StackPanel>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </DataTemplate>

    είναι σε DataTemplate γιατι το ήθελα για ένα Listview. επίσης είναι nested ItemControl γιατί είχα πρόβλημα με το carriage return/line feed (η TextBlock είτε τα αγνοούσε είτε δεν έκανε layout όπως ήθελα)

    μόλις αποκτήσω μεγαλύτερη ευχέρεια θα προσπαθίσω να φτιάξω το δικό μου TextBlock

    btw, μήπως υπάρχει κανά καλό tutorial για το πώς φτιάχνει κανέις τα δικά του controls?

     

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems