私のメインページには、すべてのアイテムのリストビューがあり、ユーザーがそれらのアイテムの1つをクリックすると詳細ページに移動します。ページの詳細ページには 、私は、最後の項目にジャンプする最後のボタンを作成Prism 6とBehavior SDKでボタンを無効にする方法
<Button Content="Last" HorizontalAlignment="Center" >
<Interactivity:Interaction.Behaviors>
<Interactions:EventTriggerBehavior EventName="Click">
<Interactions:InvokeCommandAction Command="{x:Bind Path=ViewModel.LastCommand, Mode=OneWay}"/>
</Interactions:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</Button>
と、ここで私のviewmodelの一部
class DetailPageViewModel : ViewModelBase
{
private MyItem item;
public MyItem Item
{
get { return item; }
set { SetProperty(ref item, value); }
}
public DetailPageViewModel()
{
LastCommand = new DelegateCommand(LastItemExecute, CanLastItemExecute);
LastCommand.ObservesProperty(() => Item);
}
private DelegateCommand lastCommand;
public DelegateCommand LastCommand
{
get { return lastCommand; }
set { SetProperty(ref lastCommand, value); }
}
private bool CanLastItemExecute()
{
if (Item.Index!= 1)
{
return true;
}
else
{
return false;
}
}
private void LastItemExecute()
{
Item= _context.Items.Single(p => p.Index== Item.Index- 1);
}
}
すべてがあればそのを除いて、ここで正常に動作しますリストビューの最初の項目をクリックするか、2番目の項目からジャンプすると、最後のボタンは無効になりません、それでも何もしません。 しかし、詳細ページに最初のアイテム、ヘルプPLZが表示されている場合は、このボタンを無効にしますか?
返信いただきありがとうございます。最初に、私のモデルは実際には、メソッド "CanLastItemExecute"を見ることができ、このメソッドがfalseを返すときにボタンを自動的に無効にするはずだが、そうしなかった場合、 "Index"(IDとして機能する)プロパティを持ちます。もちろん、あなたのコードは回避する一つの方法ですが、私はコマンドバインディングに基づいた解決策が欲しいです。 –
@ BrianDingしかし、私はあなたのボタンコマンドが最後のアイテムにジャンプするためのものだと思って、あなたのボタンがクリックされたときにのみコマンドを起動することができますが、最初のアイテムでボタンを無効にしたい... ... –
「最後のアイテム」は、現在のアイテムのインデックスよりも小さいアイテムを意味します。たとえば、インデックス= 2のアイテムを表示している場合、最後のボタンをクリックすると、ビューモデルが最初のアイテム(インデックス= 1 )、index = 0のアイテムがないため、ボタンを無効にします。 –