2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
我決定關(guān)閉按鈕并將其更改為堆棧布局(惡心?。?,并為此堆棧布局添加帶有事件的新標(biāo)簽!soo 代碼如下所示:
public partial class Calendar : Grid
{...
public delegate void OnDayClickedDelegate(DateTime dateOfClickedDay);
public event OnDayClickedDelegate OnDayClicked;
...
private void DayClick(DateTime clickedDate)
{
OnDayClicked(clickedDate);
}
...
private void SomeVoid()
{...
DayLayout eventInDay = dayLayoutList[dayID];
var eventLabel = new Label
{
BackgroundColor = color,
Text = name.ToUpper(),
FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Label)),
FontAttributes = FontAttributes.Bold
};
eventInDay.Children.Add(eventLabel);
...}
}
和日視圖
private class DayLayout : StackLayout
{
public delegate void OnClickedDelegate(DateTime dateOfClickedDay);
public event OnClickedDelegate OnClicked;
public Label DayNumber;
public DayLayout(DateTime day)
{
GestureRecognizers.Add
(
new TapGestureRecognizer
{
Command = new Command(() => OnClicked(day))
}
);
var dayNumber = new Label
{
HorizontalTextAlignment = TextAlignment.End,
VerticalTextAlignment = TextAlignment.Start,
Text = day.ToString("dd"),
FontSize = Device.GetNamedSize(NamedSize.Micro, typeof(Label)),
FontAttributes = FontAttributes.Bold
};
DayNumber = dayNumber;
this.Children.Add(DayNumber);
}
}

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
您可以將 GestureRecognizer 添加到 Grid 中,然后綁定點(diǎn)擊事件。
Ex 按鈕代碼(現(xiàn)在是 ContentView):
class DayButton : ContentView
{
public string EventDate;
public string EventStartTime;
public string EventEndTime;
public string EventShift;
public string EventName;
public string EventDescription;
public Grid insideGrid;
public event EventHandler Clicked;
private TapGestureRecognizer _buttonTap;
private Lable _ButtonText;
public DayButton()
{
_ButtonText = new Lable
{
Text = EventName
}
insideGrid = new Grid
{
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
RowSpacing = 0,
RowDefinitions =
{
new RowDefinition {Height = GridLength.Auto} //0
},
ColumnDefinitions =
{
new ColumnDefinition {Width = GridLength.Star} //0
}
};
//Add your elements to the grid
insideGrid.Children.Add(_ButtonText, 0, 1, 0, 1)
//Set the grid as the content of this view
Content = insideGrid;
_buttonTap = new TapGestureRecognizer();
this.GestureRecognizers.Add(_buttonTap);
_buttonTap.Tapped += ButtonClicked;
}
}
private async void ButtonClicked(object sender, EventArgs e)
{
if (this.IsEnabled)
{
Clicked?.Invoke(this, e);
}
}
然后,您可以在實(shí)現(xiàn)按鈕的位置綁定“Clicked”事件。
private DayButton _btn1 = new DayButton(){ EventName = "FooBaar"};
protected override void OnAppearing()
{
_btn1.Clicked += OnDayBtnClicked;
base.OnAppearing();
}
protected override void OnDisappearing()
{
_btn1.Clicked -= OnDayBtnClicked;
base.OnDisappearing();
}
private void OnDayBtnClicked(object sender, EventArgs e)
{
//What to do when a button is clicked
}
- 2 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報(bào)