自分自身で答えを探した後であなたの質問を見つけました。どこにでも投稿された多くのヘルプが見つかりませんでしたが、いくつかの試行錯誤の後にそれを把握しました。
Function parameter 'provider' is invalid or mismatched
XAMLに、特定の過負荷が(文字列、するIFormatProvider)をDateTimeProperty.ToStringされて呼び出されていることがその理由。
私の場合、私が表示する値はユーザーコントロール内にあるので、それぞれに対してCultureInfo依存プロパティを追加し、ビューモデルの共通ソースにバインドしました。
C#の場合、追加:そして
using System.Globalization;
public static readonly DependencyProperty CultureInfoProperty = DependencyProperty.Register(
"CultureInfo", typeof(CultureInfo), typeof(XyzReadoutView), new PropertyMetadata(default(CultureInfo)));
public CultureInfo CultureInfo
{
get { return (CultureInfo) GetValue(CultureInfoProperty); }
set { SetValue(CultureInfoProperty, value); }
}
をこれはXに必要なローカル・インスタンスを作成する:バインドは、静的プロパティを使用した場合にエラーが発生コンパイル。
とXAML:。また、フォーマットが「で囲まれて 'とされていません
<TextBlock Text={x:Bind MyDateTime.ToString('h:mm tt', CultureInfo)} />
お知らせ
、これが唯一のxのモードとして、一度更新します:バインドモード=ワンタイムのデフォルトを持っています; DateTimeまたはCultureInfoの変更を反映させたい場合は、Mode = OneWayに変更する必要があります。
<TextBlock Text={x:Bind MyDateTime.ToString('h:mm tt', CultureInfo), Mode=OneWay} />
形式はユーザが変更された場合、私は更新や容易なコントロールがビューモデルに戻って結合するために同様にそれのための依存関係プロパティを作成しますが、それはちょうど私の個人的な好みです。
public static readonly DependencyProperty DateTimeFormatProperty = DependencyProperty.Register(
"DateTimeFormat", typeof(string), typeof(XyzReadoutView), new PropertyMetadata(default(string)));
public string DateTimeFormat
{
get { return (string) GetValue(DateTimeFormatProperty); }
set { SetValue(DateTimeFormatProperty, value); }
}
とXAML:
<TextBlock Text={x:Bind MyDateTime.ToString(DateTimeFormat, CultureInfo), Mode=OneWay} />
はあなただけ(CultureInfo.Invariantのような程度)するIFormatProviderを挿入することはできませんか?それ以外の場合は、独自の変換メソッドを作成して呼び出します。 –