0

シナリオ: Windows 8.1/10 (ストア アプリ) のデスクトップ向けの c# を使用して、UWP で "シック" クライアントを開発します。

私のユーザーインターフェイスでは、次のインラインを使用しようとしました

    <StackPanel Grid.Column="0">
    <TextBlock  x:Name="Qty_Size_Crust" Margin="25,10,20,0" Padding="0,0,0,0" TextAlignment="Left" TextWrapping="Wrap" MaxHeight="25" Foreground="#ff230909" FontFamily="Segoe UI" FontSize="16" xml:space="preserve" HorizontalAlignment="Left">
if ({Binding WidgetName} == "Backend")
{             
        <Run Text="{Binding ItemCode, Converter=ItemCodeToDescriptionConverter}"/> 
}
else
{
       <Run Text="See Administrator}"/> 
}
    </TextBlock>

コンパイラはこれを受け入れますが、実行中は、Item Description も See Administrator も表示されません。この仕事のために他にやるべきことはありますか?コードを ViewModel に入れることでこの問題を回避できましたが、なぜこれが機能しないのか (または、機能しない可能性があるのか​​) 疑問に思いました。

4

1 に答える 1

8

XAML はインライン スクリプトでは機能しないため、答えは簡単です。サポートされていません。

あなたの例では、テキストが TextBlock で実行されるときに条件コードが追加されるだけなので、コンパイラはそれを受け入れます。

特定の問題に対する最善の解決策については、ビューモデルの状態が良いことです。ATemplateSelectorはビュー側で機能しますが、より多くのコードが必要です。ビューモデルは、実際にテストできるようにしたい場合に配置するのに最適な場所でもある可能性があるため、実際には正しい方法です。ビューレイヤーにロジックを配置すると、単体テストできないコードが追加されるだけです。

于 2016-02-29T17:58:55.140 に答える