탭 안에 있는 버튼을 스타일로 가져와서 뷰모델에 있는 함수를 호출하려고 합니다.
<Grid>
<TabControl>
<TabItem Style="{StaticResource CustomTabItem}"/>
</TabControl>
</Grid>
MainWindow.xaml에서 CustomTabItem이라는 style을 가져오려고 합니다.
App.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/themes/custombutton.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
App.xaml에서 호출할 수 있도록 리소스사전을 가져왔고요.
themes/custombutton.xaml
<Style x:Key="CustomTabItem" TargetType="{x:Type TabItem}">
<Setter Property="Header" Value="ResourceDictionary"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Button x:Name="gdgd"
Content="ResourceDictionary Button"
Command="{Binding AClickCommand}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
리소스사전에 위와 같이 정의를 해줬습니다.
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainWindowViewModel();
}
}
public class MainWindowViewModel
{
private ICommand _AClickCommand;
public ICommand AClickCommand
{
get
{
if (_AClickCommand == null) _AClickCommand =
new RelayCommand(OnAClick);
return _AClickCommand;
}
}
private void OnAClick()
{
System.Diagnostics.Trace.WriteLine("Resource Click");
}
}
다음으로, MainWindow.xaml.cs의 생성자에서 뷰모델과 연결을 하고, 커맨드 객체를 연결해줬는데, 동작을 하지 않습니다.
라이브 시각적 트리를 찍어보면, tabitem의 Datacontext와 매핑이 되는데, 동작이 왜 안되는 지 궁금합니다.
