5

以下のように、バッキング プロパティに対してスタイルを介して動的に設定されたコンテンツ (テキスト) を持つボタンがあります。

<Button>
   <Button.Style>
      <Style>
         <Setter Property="Button.Content" Value="Advanced Search" />
         <Style.Triggers>
            <DataTrigger Binding="{Binding Path=IsAdvancedSearch}" Value="True">
               <Setter Property="Button.Content" Value="Standard Search" />
            </DataTrigger>
         </Style.Triggers>
      </Style>
   </Button.Style>
</Button>

このボタンを変更して、同じ動的テキストを含むハイパーリンクのみを表示する必要があります。このような:

<Button>
   <Button.Template>
      <ControlTemplate>
         <TextBlock>
            <Hyperlink>
               Standard Search
            </Hyperlink>
         </TextBlock>
      </ControlTemplate>
   </Button.Template>
</Button>

スタイルを介してハイパーリンクのテキスト (インラインまたはその他のタグ) を動的に設定する方法はありますか?

XAML経由でアクセスできませんでした。ハイパーリンク内のテキストブロックの通常のバインディングで動作するようになりましたが、実際にはビューモデルに冗長なプロパティが作成されています。

4

4 に答える 4

9

ハイパーリンク内に別の TextBlock を埋め込んでバインドできます。

<TextBlock>
    <Hyperlink>
        <TextBlock Text="{Binding LinkText}" />
    </Hyperlink>
</TextBlock>
于 2012-09-14T04:02:04.413 に答える
5

解決策は、単純にスタイルを内側の Textblock に適用することでした。

            <Button x:Name="SwitchSearchType">
                <Button.Template>
                    <ControlTemplate>
                        <TextBlock>
                            <Hyperlink>
                                <Hyperlink.Inlines>
                                    <TextBlock>
                                        <TextBlock.Style>
                                            <Style>
                                                <Setter Property="TextBlock.Text" Value="Advanced Search" />
                                                <Style.Triggers>
                                                    <DataTrigger Binding="{Binding Path=IsAdvancedSearch}" Value="True">
                                                        <Setter Property="TextBlock.Text" Value="Standard Search" />
                                                    </DataTrigger>
                                                </Style.Triggers>
                                            </Style>
                                        </TextBlock.Style>
                                    </TextBlock>
                                </Hyperlink.Inlines>
                            </Hyperlink>
                        </TextBlock>
                    </ControlTemplate>
                </Button.Template>
            </Button>
于 2012-09-17T07:39:46.533 に答える
-2

与えられた:

<Hyperlink x:Name="uriEmailAddress" Click="Hyperlink_Click"></Hyperlink>

コード:

string e = Properties.Settings.Default.Email;
uriEmailAddress.NavigateUri = new Uri("mailto:" + e);
InlineCollection ic = uriEmailAddress.Inlines;
ic.Add(new Run(e));
于 2014-01-19T04:24:18.697 に答える