かにのフェッチ文字列からの資源を割り当てる資源コンポーネントのラインナップセー
-
21-08-2019 - |
質問
いXBAPの申請は、以下のユーザー制御:
<UserControl x:Class="XXX.UsersGrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="Auto" Width="Auto">
<UserControl.Resources>
<DataTemplate x:Key="UpArrowUsers">
<DockPanel>
<TextBlock Text="xxUser" x:Name="upArrowUsersHeader" HorizontalAlignment="Center"></TextBlock>
<Path x:Name="arrow" StrokeThickness = "1" Fill= "gray" Data= "M 5,10 L 15,10 L 10,5 L 5,10"/>
</DockPanel>
</DataTemplate>
</UserControl>
...
それをフェッチ文字列"xxUser"からresxファイルに埋め込む資源としての応用 方法を実現。
解決
これらの答えのどれもあなたが望むものに近いん。私は、WPFでのローカライズについて読むことから始めたいです。あなたはWPFとローカライズを行っている場合は、Xたいと思うことがわかります:UIDは、あなたのアプリケーション内のすべてのノードで定義された
。他のヒント
私はプログラムでそれを行うことができました
<TextBlock VerticalAlignment="Center" Margin="3"
Text="{x:Static prop:Resources.OpenButton}"
Visibility="{Binding Source={x:Static prop:Settings.Default}, Path=ShowButtonText, Converter={StaticResource BoolToVis}}"></TextBlock>
私もそうのように、私のXAMLで.propertiesファイルの名前空間を含める必要がありました
xmlns:prop="clr-namespace:MyProjectNamespace.Properties"
これは、私はグローバル化のための私のプロジェクトのために定義された文字列リソースを使用するだけでなく、許可され、私も自分のアプリケーションの設定を(双方向)に結合することができました。これは私の聞かせて非常に簡単にのあなたは、使用の設定を見ることができるようになど、ウィンドウの位置、大きさを、覚えておいてください。設定、およびリソースのため。リソースに対するます。
スティーブンが述べたように、私は「公式」の方法または「最良」の方法は、X固執することだと思います。uidをあなたがグローバル化したいすべてのものの上に、私はしませんでしたし、それが問題なく働きました。あなたが自動化ツールを使用したり、大規模なプロジェクトと同じように翻訳タスクを分割している場合Uidの事ほとんど必要とされています。私は、xは思います。私はVSに手動ですべて自分のものをやったので、多分それはOKだった。
ベン
二つの追加ポイントとされてしまったのでしょ以上に"できたいと思います...。:
- への思いを包みます。資源のオブジェクトです。アクセスできますので直接、そして、私の例です。と思い包装のオブジェクトをわかりやすく伝えるためのと同じ結果についての私の第2のポイント。
- デフォルトでは、リソースファイルは、"ResXFileCodeGenerator".その内部で発生し、コードのファイル、話サイトの最新トレンドできないアクセスします。変更するこのへ"PublicResXFileCodeGenerator"を公開。この設定を変更することができるクリックしてリソースファイルのソリューションエクスプローラを編集した"カスタムツール"物件です。
(申し訳ないのになって、上記郵便でした臨時委員。)
のプロパティなどのリソースを利用できるように静的クラスを作成します。
public static class Resources
{
public string Resource
{
return Properties.Resources.ResourceManager.GetString("Resource");
}
}
次に、あなたはこれにあなたのテキストボックスをバインドすることができます:
<TextBlock Text="{Binding Source={x:Static local:Resources}, Path=Resource}" x:Name="upArrowUsersHeader" HorizontalAlignment="Center"
xmlns:local="clr-namespace:MY_NAMESPACE;assembly=MY_ASSEMBLY">
ベンのが言ったように、私は<見つかったのhref = "http://www.rhyous.com/2010 / 10/20 / /」REL = "nofollowをnoreferrer">別のチュートリアルの資源-RESX-FOR-ストリング・イン・ツー準備-FOR-局在-WPFアプリケーション-技術を用いて。
access modifier
のResources.resx
はInternal
にPublic
から変更する必要があります。私は何度も失敗し、access modifier
にPublic
を変更した後、それは作業を行います。
私は、これはXAMLで直接行うことができるならば知っているが、あなたがこのResourceManager周り独自のラッパークラスを記述する場合、代わりにそれを使用しないでください。クラスは、TextBlockのを継承することがわかります:
public class ResourceContentTextBlock : TextBlock
{
public string ResourceName
{
set
{
this.Text = Properties.Resources.ResourceManager.GetString(value);
}
}
}
あなたは、あなたがそれ以外のTextBlockを使用するどこでもあなたのXAMLでResourceContentTextBlockを使用することができます:
<Window x:Class="WpfApplication3.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:client="clr-namespace:WpfApplication3"
>
<client:ResourceContentTextBlock ResourceName="String1" />
</Window>