0

データグリッドの項目ソースとしてオブジェクトのリストがあります。ツールチップ付きのボタンもありますが、ツールチップを「ローカライズ可能」/動的にしたいです。オブジェクトのクラスに別のプロパティを明示的に追加したくない (醜い) ので、代わりに、UserControl に文字列を作成し、次のようなことを行います。

public string ThisTag { get { return "someString"; } }

そしてxamlで

<Button ...>
   <ToolTipService.ToolTip>
      <Tooltip Style={StaticResource ToolTipStyle} Tag={Binding Source=thisUserControl.ThisTag} />
...

スタイル

<Style x:Name="ToolTipStyle" TargetType="ToolTip">
   <Setter Property="Template">
       <Setter.Value>
           <ControlTemplate TargetType="ToolTip">
               <Grid>
                  <TextBlock Text="{TemplateBinding Tag}" Foreground="{StaticResource AnotherResource}"></TextBlock>
...
  1. それは可能ですか、それともプロパティにバインドする同様の簡単な方法はありますか?
  2. 文字列にバインドする適切な構文は何ですか?
4

2 に答える 2

0

Binding Path と ElementName スタイルをうまく機能させることができないので、そのようなカスタム クラスを作成することにしました。

public class LocalizedDatagridButtonsTooltips
{
   public string TooltipOne { get { return SomeMethodToTranslate("This Phrase"); } }
   ...
}

App.xaml にクラスのインスタンスを作成します (クラスが宣言されている場所によって異なります)。「local」はxamlで宣言されています。

<local:LocalizedDatagridButtonsTooltips x:Key="LocalizedTooltips"/>

次に、タグまたは xaml で文字列を必要とする要素を設定します (私の場合、Tag 属性にはバインディングが必要です)。

<Tooltip Tag="{Binding Source={StaticResource LocalizedTooltips}, Path=TooltipOne}" >

ここから解決策を得ました:

http://www.c-sharpcorner.com/uploadfile/dpatra/using-static-resource-in-silverlight-3-application/

これらのソリューションは 4 ~ 5 でも機能します (SL 5 には "AncestorType" accr. dbaseman があると思います)。

于 2012-09-07T09:06:21.213 に答える
0

オブジェクトがローカライズ可能なリソースである場合は、実際の .ResX ファイルを使用することをお勧めします。XAML 内でこれらを使用する方法については、こちらを参照してください(基本的に、.ResX を静的 XAML リソースとして参照します)。

しかし、コード ビハインド プロパティにバインドしたいだけであれば、これも可能です。Sourceプロパティを正しく設定することが重要です。これは、ルート要素の を参照することで実行できますDataContext。つまり、次のようになります。

<Button Content="button text">
    <ToolTipService.ToolTip>
        <TextBlock Text="{Binding Path=DataContext.ThisTag,ElementName=LayoutRoot}" />
    </ToolTipService.ToolTip>
</Button>

LayoutRootコントロール/ウィンドウ/ページのルート要素の名前はどこにありますか。

1. Silverlight 5 はAncestorType相対バインディングでの使用をサポートしていますが、Silverlight 4 はサポートしていないことに注意してください。
2. 使用することにも注意してくださいToolTipService.ToolTip(Tagは XAML 要素にデータを埋め込む方法であり、実際には何も表示されません)。

于 2012-09-05T16:43:10.770 に答える