この質問にはすでに答えがあります:
複数の値を単一の WPF TextBlock にバインドするにはどうすればよいですか?
(答えは4つ)
3 年前
に閉店しました。
WPF デスクトップ アプリを構築しようとしていますが、HomeWindow は次のように定義されています。
<Window x:Class="App1.HomeWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:App1"
xmlns:MainWindow="clr-namespace:App1"
xmlns:uc="clr-namespace:App1.UserControls.Home"
mc:Ignorable="d" UseLayoutRounding="True"
Title="App 1" Height= "750" Width="1200" MinHeight="500" MinWidth="800" WindowStyle="ThreeDBorderWindow" WindowStartupLocation="CenterScreen">
アプリが最初にロードされるとき、ユーザー名とクライアント名を定義された単純なクラスに保存します。このように:
public static class LoggedInData
{
public static string LoggedInUserName { get; set; }
public static string LoggedClientName { get; set; }
}
私が実現したいのは、ウィンドウのタイトルにテキストを表示するだけではなく、静的テキスト App1、LoggedInUserName の値、および LoggedClientName の値を表示したいということです。
ここで見た回答のいくつかを試しましたが、アプリで再現できませんでした。誰か助けてくれませんか?
------------------------
これは、ウィンドウの Title プロパティと文字列書式設定のマルチバインディングを使用して実現できます。必要なのは、ウィンドウが表示される前に、静的な LoggedInUserName プロパティと LoggedClientName プロパティが割り当てられていることを確認することだけです。
<Window x:Class="App1.HomeWindow" ...>
<Window.Title>
<MultiBinding StringFormat="{}App1 {0} {1}">
<Binding Source="{x:Static local:LoggedInData.LoggedClientName}"/>
<Binding Source="{x:Static local:LoggedInData.LoggedInUserName}"/>
</MultiBinding>
</Window.Title>
<!-- ...your other code. -->
</Window>
要件に合わせて StringFormat を調整できます。 {} プレフィックスは単なるエスケープ シーケンスであり、{0} と {1} はバインディングのプレースホルダーであり、残りはユーザー次第です。もちろん、これを拡張して、コントロール、データ コンテキスト、またはビュー モデルの他のプロパティをバインドすることもできます。
1
すべて試しましたが、再現できません。言っても当然ですが、私は独学で学習しており、プログラミングの経験はありません。完全なコードがどうあるべきかを示していただけますか?
– ブルーノ 貧困 タイ人
2020 年 9 月 4 日午後 10 時 25 分