我正在创建一个Windows风格,我已经将按钮集成在里面。 如何处理按钮的click事件? 我是否有义务创建一个custumcontrol?
这是我的wpf风格:
<Style TargetType="Window" x:Key="borderless">
<Setter Property="AllowsTransparency" Value="True"/>
<Setter Property="WindowStyle" Value="None"/>
<Setter Property="ResizeMode" Value="CanResizeWithGrip"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Window">
<Border Style="{DynamicResource windowBorder}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="3" Style="{DynamicResource minimizeButton}"/>
<Button Grid.Column="4" Style="{DynamicResource closeButton}"/>
<Image Height="20" Width="{Binding Height, RelativeSource={RelativeSource Self}}" Margin="2"/>
<TextBlock Text="Title" Style="{DynamicResource windowTitle}" Grid.Column="1"/>
</Grid>
<ContentPresenter Grid.Row="1"/>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
谢谢!
答案 0 :(得分:1)
有多种方法可以处理资源字典中样式内部的按钮单击。
请参阅:Is it possible to set code behind a resource dictionary in WPF for event handling?
简而言之:
Warning in listLearners.character("cluster") :
The following learners could not be constructed, probably because their packages are not installed:
classif.ada,classif.bartMachine,classif.bdk,classif.blackboost,classif.boosting,classif.bst,classif.C50,classif.clusterSVM,classif.cvglmnet,classif.dbnDNN,classif.dcSVM,classif.earth,classif.evtree,classif.extraTrees,classif.fnn,classif.gamboost,classif.gaterSVM,classif.geoDA,classif.glmboost,classif.glmnet,classif.hdrda,classif.kknn,classif.LiblineaRL1L2SVC,classif.LiblineaRL1LogReg,classif.LiblineaRL2L1SVC,classif.LiblineaRL2LogReg,classif.LiblineaRL2SVC,classif.LiblineaRMultiClassSVC,classif.linDA,classif.lqa,classif.mda,classif.mlp,classif.neuralnet,classif.nnTrain,classif.nodeHarvest,classif.pamr,classif.penalized.fusedlasso,classif.penalized.lasso,classif.penalized.ridge,classif.plr,classif.quaDA,classif.randomForestSRC,classif.ranger,classif.rda,classif.rFerns,classif.rknn,classif.rotationForest,classif.RRF,classif.rrlda,classif.saeDNN,classif.sda,classif.sparseLDA,classif.xgboost [... truncated]
,请创建代码文件MyResource.xaml
MyResource.xaml.cs
<ResourceDictionary x:Class="MyNamespace.MyDictionary"
只需在viewmodel中创建一些namespace MyNamespace
{
public partial class MyDictionary : ResourceDictionary
{
public MyDictionary()
{
InitializeComponent();
}
}
}
属性,然后使用ICommand
方法处理点击操作。然后在xaml中绑定命令
Execute
使用带命令绑定的视图命令。例如,我使用<Button Grid.Column="4" Style="{DynamicResource closeButton}" Command="{Binding MyViewmodelCommand}"/>
命令,但自定义自定义命令的原理相同。
在样式中,只需使用命令:
ApplicationCommands.Close
在可以使用代码的树的某处,将命令绑定到事件处理程序。例如在窗口中(但我不能100%确定它是否适用于以窗口本身为目标的样式)
<Button Grid.Column="4" Style="{DynamicResource closeButton}" Command="ApplicationCommands.Close"/>