我有一个generic.Xaml主题来创建一个自定义日历控件,它位于另一个项目中,引用到我的主WPF表单。在此通用页面上,日历上的每天/每个方块都已设置为按钮。我想为每个按钮添加一个click_event,然后在我将日历控件放到的表单上触发一个方法。
这是日历:
然后是XAML代码:
<Button IsEnabled="{Binding IsEnabled}" Click="" BorderThickness="0" ScrollViewer.VerticalScrollBarVisibility="Auto" Background="{x:Null}" Foreground="White" Height="72" Width="131">
<Button.Template>
<ControlTemplate>
<ContentPresenter
VerticalAlignment="Center"
HorizontalAlignment="Left">
<ContentPresenter.Content>
<Grid x:Name="ContentGrid" HorizontalAlignment="Left" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="15*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="15*" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top" FlowDirection="RightToLeft">
<TextBlock Text="{Binding Date, Converter={StaticResource DateConverter}, ConverterParameter=DAY}" Grid.Column="0" VerticalAlignment="Top" FontSize="14" Margin="5,5,5,5" FontWeight="Light" >
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsTargetMonth}" Value="false">
<Setter Property="TextBlock.Foreground" Value="Black"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
<TextBlock Text="{Binding Notes, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Column="2" VerticalAlignment="Center" FontSize="14"/>
</Grid>
</ContentPresenter.Content>
</ContentPresenter>
</ControlTemplate>
</Button.Template>
</Button>
从代码中可以看出,我将click_event留空,因为这是我需要帮助的,因为我不确定在另一个项目中引用该方法需要什么。我试过简单地将方法名称放入,这是我收到的错误:
http://i.stack.imgur.com/M2B0e.jpg
我想要链接的方法(将打开另一种形式):
private void Day_Click(object sender, RoutedEventArgs e)
{
CalendarExtension CE = new CalendarExtension(DateTime.Now, _loggedInUser);
CE.Show();
}
我的问题,正如标题所述,是从Generic.xaml页面引用Click_Event的最佳方法是什么?
答案 0 :(得分:1)
啊,旧的我如何处理在generic.xaml
'问题中声明的控件的事件。好吧,坦率地说,这有点痛苦。您需要在应用CustomControl
时调用的ControlTemplate
中实施Control.ApplyTemplate
Method。
在此方法中,您将需要访问相关的UI元素(如果您命名它们会有帮助)并以编程方式添加事件处理程序。您可以查看MSDN上的How to: Find ControlTemplate-Generated Elements页面,以帮助您从ControlTemplate
访问UI元素。我猜你可以自己附上处理程序。