3

私は 1 か月前にアプリケーションを開始しました。モバイル アプリを作成するのは初めてで、XAML を使用するのも初めてです。C# の経験はありますが。

これは私が使用したデータ形式です:

idAyat  namaKitab   abbKitab   numBab   numAyat  isi
  1     kejadian      kej        1         1     some long string to process blah blah
  2     kejadian      kej        1         2     some long string to process blah blah
  3     kejadian      kej        1         3     some long string to process query blah
  4     kejadian      kej        1         4     some long string to process blah query
  5     kejadian      kej        1         5     some query string to process blah blah

これは私の XAML コードです:

<GridView x:Name="gvResult">
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <local:WrapPanel
                Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid Margin="5">
                <Grid.RowDefinitions>
                    <RowDefinition Height="auto"/>
                    <RowDefinition Height="auto"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="300" />
                </Grid.ColumnDefinitions>
                <TextBlock Width="300" TextWrapping="Wrap">
                    <Underline>
                        <Run FontWeight="Medium" Text="{Binding abbKitab}"/><Run Text=" "/><Run FontWeight="Medium" Text="{Binding numBab}"/>
                        <Run FontWeight="Medium" Text=":"/> <Run FontWeight="Medium" Text="{Binding numAyat}"/>
                    </Underline>
                    <LineBreak/>
                    <Run Text="{Binding isi}"/>
                </TextBlock>
            </Grid>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

ユーザーが挿入した「クエリ」の前景色を太字または変更する検索結果ページを作成しようとしています。多くの記事を読み、スタイル セッターをコード ビハインドから変更できないというスレッドを1 つ見つけました。

記事が正しかったと仮定すると、ページのテキストブロックの前景色を変更するにはどうすればよいですか? より具体的には、検索クエリに一致した単語の色を変更したいだけです。

多分このようになると思います:

<Style x:Key="PriorityStyle" TargetType="TextBlock" >
    <Setter Property="Foreground" Value="#6c6d6f" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding Priority}" Value="Critical">
            <Setter Property="Foreground" Value="Red"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

(編集)どうやら上記のコードは WINRT-XAML ではサポートされていません。それは WPF-XAML です。

しかし、そのコードで特定の単語をターゲットにするにはどうすればよいでしょうか? 助言がありますか ?

ありがとうございました。

4

2 に答える 2

2

WPF トリガーは WinRT に実装されていないため、GridView で DataTemplateSelector を定義できます。

この TemplateSelector で、「通常の」エントリ用と「検索された」エントリ用の 2 つのテンプレートを定義します。

テンプレート セレクターの SelectTemplate メソッドで、データ オブジェクトのプロパティをテストして、いずれかのテンプレートを適用する必要があるかどうかを確認します。

于 2013-05-23T09:26:42.690 に答える