I have a TabControl with six tabs in my ResultView. The ViewModel that is behind this view can be either ResultTypeOneViewModel or ResultTypeTwoViewModel, each of which comes from ResultViewModel, but you can use the result viewer interchangeably with any type of result.
The difference is that in ResultTypeOneViewModel, tabs 1 and 3 should be visible, and the rest should be hidden. In ResultTypeTwoViewModel, tabs 2, 3, 4, 5, 6 should be visible, and tab 1 is hidden.
I wanted to do it through something like
<TabItem Name="1" Visibility={Binding IsTabVisible(0)}> <TabItem Name="2" Visibility={Binding IsTabVisible(1)}> <TabItem Name="3" Visibility={Binding IsTabVisible(2)}> etc...
And have an abstract method declaration in ResultsViewModel, for example
public abstract Visibility IsTabVisible(int index);
And in ResultsOneViewModel there is
public override Visibility IsTabVisible(int index) { if (index == 0 || index == 2) return Visibility.Visible; return Visibility.Hidden; }
And in ResultsTwoViewModel there is
public override Visibility IsTabVisible(int index) { if (index == 0) return Visibility.Hidden; return Visibility.Visible; }
But I canβt figure out how to call a method like this with a parameter via iN WPF XAML bindings.
Can someone suggest how I can do this, or if this is not possible with this method, in another way I could solve this problem?
wpf mvvm binding
Nzjames
source share