我构建了一个控制模板,带有两个按钮,我在MainWindow类中使用它:
ControlTemplate:
<ControlTemplate x:Key="LeftPanelTemplate">
<Grid Grid.Column="0" Grid.Row="0" Margin="10,15,5,5" >
<Border BorderThickness="7" CornerRadius="4">
<Border.BorderBrush>
<SolidColorBrush Color="#73B2F5" Opacity="0.5"/>
</Border.BorderBrush>
<Grid>
<Grid.Background>
<SolidColorBrush Color="#73B2F5" Opacity="0.5"/>
</Grid.Background>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Button Name="CustomerButton" Grid.Row="1" Grid.Column="0" Width="40" Height="40" Content="Customer" Click="CustTabButton_Click" ></Button>
<Button Name="BossButton" Grid.Row="1" Width="40" Height="40" Content="Boss" Margin="23,206,23,114" Click="BossTabButton_Click"></Button>
</Grid>
</Border>
</Grid>
</ControlTemplate>
我在MainWindow XAML上引用它:
<ContentControl Template="{StaticResource LeftPanelTemplate}"/>
我收到错误,指出无法找到控件模板中两个按钮的单击事件 - 因为我将其移动到名为MainWindowResources.xaml的ResourceDirectory文件中:
'MyWPFApp.MainWindowResource'不包含。的定义 'CustTabButton_Click'并没有扩展方法'CustTabButton_Click' 接受“MyWPFApp.MainWindowResource”类型的第一个参数可以 找到(你错过了使用指令或汇编引用吗?)
我找到了这个链接:Is it possible to set code behind a resource dictionary in WPF for event handling?
是否有更短的方法可以从资源目录中执行MainWindow代码中的click事件?因为将整个代码从MainWindow移动到REsourceDirectory.xaml.code会花费很多时间并暴露给公共的很多变量。
答案 0 :(得分:1)
您可以使用命令而不是按钮单击并将命令从主窗口绑定到用户控件。