В моей ViewModel у меня есть BindingList, который содержит мои виды, которые должны отображаться в виде вкладок в моем TabControl. Текст для вкладки определяется в коде позади представления. Я также определил простой тестовый класс для проверки привязки, который отлично работает. Не работает только привязка к свойству code позади.
Xaml-код для моего TabControl:
<TabControl ItemsSource="{Binding TabControlContentList}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DisplayName, FallbackValue=FallbackValue}" />
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
BindingList, к которому он привязан:
void RaisePropertyChanged([CallerMemberName] string propertyName = "")
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public BindingList<object> TabControlContentList
{
get => tabControlContentList;
set
{
tabControlContentList = value;
RaisePropertyChanged();
}
}
private BindingList<object> tabControlContentList = new BindingList<object>();
Класс теста:
class ControlTest
{
public string DisplayName { get; private set; } = "";
public ControlTest(string name) => DisplayName = name;
}
Код Xaml позади AnalysisView.xaml.cs:
public partial class AnalysisView
{
public string DisplayName { get; private set; } = "Analysis";
public AnalysisView()
{
InitializeComponent();
}
}
В моей ViewModel у меня есть следующий код:
public AnalysisView analysisView = new AnalysisView();
TabControlContentList.Clear();
TabControlContentList.Add(new ControlTest("Menu 1"));
TabControlContentList.Add(new ControlTest("Menu 2"));
TabControlContentList.Add(analysisView);
TabControlContentList.Add(new ControlTest("Menu 3"));
TabControlContentList.Add(new ControlTest("Menu 4"));
My TabControl затем показывает пять вкладок. Первые два имеют текст «Меню 1» и «Меню 2», третий - «FallbackValue», затем «Меню 3» и «Меню 4».
Я больше не знаю, почемупривязка к свойству в коде в AnalysisView.xaml.cs не работает. Это может быть обычная вещь Wpf?