正如问题所述,我正在寻找将Click_Events
添加到Generic.Xaml
中的按钮。如何将Click_Events添加到按钮在Generic.Xaml中添加了运行时?
但是,这不是每个人似乎都在问的典型问题,因为它不那么简单。我的按钮在运行时生成,全部35个按钮都在日历控件上。日历上的每一天(Square)将会是一个按钮,单击它时会打开一个弹出窗体,显示完整日期和更多详细信息。
这里是日历控件的一个例子:
http://i.stack.imgur.com/il1V6.jpg
这里是XAML代码:
<Button IsEnabled="{Binding IsEnabled}" Click="" BorderThickness="0" ScrollViewer.VerticalScrollBarVisibility="Auto" Background="{x:Null}" Foreground="White" Height="72" Width="131">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<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>
你可以从XAML看到,有一个Click_Event
可用,但我无法引用另一个表单,也无法命名这些按钮,因为会有几个按钮,所以没有直接的方法可以在类中引用方法。此外,我试图绑定,但一直给我一个空绑定错误。
目前,在Calendar类,我有以下方法:
public void BuildCalendar(DateTime targetDate)
{
Days.Clear();
//Calculate when the first day of the month is and work out an
//offset so we can fill in any boxes before that.
DateTime d = new DateTime(targetDate.Year, targetDate.Month, 1);
int offset = DayOfWeekNumber(d.DayOfWeek);
if (offset != 1) d = d.AddDays(-offset);
//Show 5 weeks each with 7 days = 35
for (int box = 1; box <= 35; box++)
{
Day day = new Day { Date = d, Enabled = true, IsTargetMonth = targetDate.Month == d.Month };
day.PropertyChanged += Day_Changed;
day.IsToday = d == DateTime.Today;
Days.Add(day);
d = d.AddDays(1);
}
}
而一个Day_Clicked
方法,我似乎无法引用(如果这是我需要做的):
private void Day_Clicked(object sender, EventArgs e)
{
if (Clicked == null) return;
Clicked(this, new DayClickedEventArgs(sender as Day));
}
定制EventHandler
:
public event EventHandler<DayClickedEventArgs> Clicked;
事件类:
public class DayClickedEventArgs : EventArgs
{
public Day Day { get; private set; }
public DayClickedEventArgs(Day day)
{
this.Day = day;
}
}
因此,要总结,我需要知道如何生成Click_Events
在每个日历生成按钮。 Click_Events
使用Generic.Xaml
页面生成的按钮。
感谢您的回复。当你说_“使用FindName'方法从XAML查找控件”_,由于它们是生成的按钮/控件,并且没有设置名称,我怎么能找到它们?除非我完全误解你的观点。 – EliotE123
错误...也许给他们一个名字?:'button.Name =“Button1”;' – Sheridan
好吧,谢谢,我想我明白。那么我的通用页面上的XAML中的'Click_Event'会怎么样? – EliotE123