3
私たちはTemplate10を使用しているUWPアプリケーションを持っています。割引を示すテキストブロックとテキストボックスがあります。 ViewModel.Discount
がnullの場合は、テキストブロックを非表示にします。nullのときにxaml要素を非表示にする
Visibility="{x:Bind ViewModel.Discount, Converter={StaticResource HideWhenNullConverter}}"
の可視性を設定ビューでは、コンバータ
<T10Converters:ValueWhenConverter x:Key="HideWhenNullConverter" When="{x:Null}">
<T10Converters:ValueWhenConverter.Value>
<Visibility>Collapsed</Visibility>
</T10Converters:ValueWhenConverter.Value>
<T10Converters:ValueWhenConverter.Otherwise>
<Visibility>Visible</Visibility>
</T10Converters:ValueWhenConverter.Otherwise>
</T10Converters:ValueWhenConverter>
を定義しているApp.xamlで
:
public class ViewModel : ViewModelBase
{
decimal? _Discount = default(decimal?);
public decimal? Discount
{
get
{
return _Discount;
}
set
{
if (value == 0) value = null;
Set(ref _Discount, value);
}
}
しかし、テキストブロックは、ViewModel.Discount
の値がnullであっても常に表示されます。 ViewModel.Discount
がヌルの場合、どのようにテキストブロックを非表示にするのですか
また、VisibilityロジックはViewModelの責任であると述べることもできます。最新のUWPは可視性をブールに直接バインドできます。後で最大価格などの追加のビジネスルールがあるとします。 –
@HenkHoltermanニース、これについて言及してくれてありがとう - 私はどうにかして[これを逃した](https://social.technet.microsoft.com/wiki/contents/articles/34846.uwp-コンパイル - バインド - ウィンドウ - 10-年齢-update.aspx)。 – Romasz
_14393_、 'Visibility =" {x:バインドViewModel.Discount.HasValue、Mode = OneWay} "'。 –