ResultView に 6 つのタブを持つ TabControl があります。この View の背後にある ViewModel は、ResultTypeOneViewModel または ResultTypeTwoViewModel のいずれかにすることができます。どちらも ResultViewModel から派生しますが、どちらの結果タイプでも結果ビューアーを交換可能に使用できます。
違いは、ResultTypeOneViewModel では、タブ 1 と 3 を表示し、残りを非表示にする必要があることです。ResultTypeTwoViewModel では、タブ 2、3、4、5、6 を表示し、タブ 1 を非表示にする必要があります。
私は次のような方法でこれをやりたかった
<TabItem Name="1" Visibility={Binding IsTabVisible(0)}>
<TabItem Name="2" Visibility={Binding IsTabVisible(1)}>
<TabItem Name="3" Visibility={Binding IsTabVisible(2)}>
etc...
そして、次のように ResultsViewModel で抽象メソッド宣言を行います。
public abstract Visibility IsTabVisible(int index);
そしてResultsOneViewModelには
public override Visibility IsTabVisible(int index)
{
if (index == 0 || index == 2) return Visibility.Visible;
return Visibility.Hidden;
}
そしてResultsTwoViewModelには
public override Visibility IsTabVisible(int index)
{
if (index == 0) return Visibility.Hidden;
return Visibility.Visible;
}
しかし、バインディングiN WPF XAMLを介してパラメーターを使用してこのようなメソッドを呼び出す方法がわかりません。
これを行う方法を誰かが提案できますか、またはこの方法では不可能な場合は、この問題を解決できる別の方法を教えてください。