আপনি যদি এমভিভিএম প্যাটার্নটি ব্যবহার করছেন তবে ইভেন্ট হ্যান্ডলারটি ব্যবহার করা অসুবিধাজনক (এবং প্যাটার্নটি ভেঙে)। পরিবর্তে, আপনি প্রতিটি ভিউ মডেলের Selector.IsSelected
কোনও নির্ভরশীল সম্পত্তিতে প্রতিটি স্বতন্ত্র ট্যাবআইটেমের সম্পত্তি আবদ্ধ করতে পারেন এবং তারপরে PropertyChanged
ইভেন্ট হ্যান্ডলারটি পরিচালনা করতে পারেন। এই ভাবে আপনি সঠিকভাবে জানেন যে কোন ট্যাবটির উপর ভিত্তি করে নির্বাচন / অনির্বাচিত হয়েছে PropertyName
এবং প্রতিটি ট্যাবের জন্য আপনার কাছে একটি বিশেষ হ্যান্ডলার রয়েছে।
উদাহরণ: MainView.xaml
<TabControl>
<TabItem Header="My tab 1" Selector.IsSelected="{Binding IsMyTab1Selected}"> ... </TabItem>
<TabItem Header="My tab 2" Selector.IsSelected="{Binding IsMyTab2Selected}"> ... </TabItem>
</TabControl>
উদাহরণ: MainViewModel.cs
public bool IsMyTab1Selected {
get { return (bool)GetValue(IsMyTab1SelectedProperty); }
set { SetValue(IsMyTab1SelectedProperty, value); }
}
public static readonly DependencyProperty IsMyTab1SelectedProperty =
DependencyProperty.Register("IsMyTab1Selected", typeof(bool), typeof(MainViewModel), new PropertyMetadata(true, new PropertyChangedCallback(MyPropertyChanged)));
public bool IsMyTab2Selected {
get { return (bool)GetValue(IsMyTab2SelectedProperty); }
set { SetValue(IsMyTab2SelectedProperty, value); }
}
public static readonly DependencyProperty IsMyTab2SelectedProperty =
DependencyProperty.Register("IsMyTab2Selected", typeof(bool), typeof(MainViewModel), new PropertyMetadata(false, new PropertyChangedCallback(MyPropertyChanged)));
private void MyPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
if (e.Property.Name == "IsMyTab1Selected") {
} else if (e.Property.Name == "IsMyTab2Selected") {
}
}
যদি আপনার MainViewModel
হয় INotifyPropertyChanged
বদলে DependencyObject
, তারপর এই পরিবর্তে ব্যবহার করুন:
উদাহরণ: MainViewModel.cs
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName) {
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public MainViewModel() {
PropertyChanged += handlePropertyChanged;
}
public bool IsMyTab1Selected {
get { return _IsMyTab1Selected ; }
set {
if (value != _IsMyTab1Selected ) {
_IsMyTab1Selected = value;
OnPropertyChanged("IsMyTab1Selected ");
}
}
}
private bool _IsMyTab1Selected = false;
public bool IsMyTab2Selected {
get { return _IsMyTab2Selected ; }
set {
if (value != _IsMyTab2Selected ) {
_IsMyTab2Selected = value;
OnPropertyChanged("IsMyTab2Selected ");
}
}
}
private bool _IsMyTab2Selected = false;
private void handlePropertyChanged(object sender, PropertyChangedEventArgs e) {
if (e.PropertyName == "IsMyTab1Selected") {
} else if (e.PropertyName == "IsMyTab2Selected") {
}
}
sender
পরিবর্তে আমি সন্ধান করছিe.Source