- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我制定了一个如下所示的自定义时间表并且它有效但现在我正在尝试添加事件/约会并且我无法弄清楚我的生活如何做到这一点。我希望能够单击日历上的其中一个按钮(日期),创建约会/事件,然后将事件的标题添加到为正确的网格单元(日期)创建的 txtblock(网格单元)在日历上。我无法弄清楚如何通过单击指定的按钮来访问某个网格单元。我不会为这段代码的编写方式感到自豪。我最初想要一个 MVVM,但现在可以用了。我不得不遇到的问题是每次我单击 < 或 > 按钮更改月份时,都会创建一个新月份并删除旧月份。所以一次只能制作一个月。请提供任何帮助。
wpf 的一部分:使用 ItemsControl
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Button Content="{Binding day}" Width="175" HorizontalAlignment="Stretch" VerticalAlignment="Top" VerticalContentAlignment="Top" HorizontalContentAlignment="Left" Name="btnCalenderDate" Click="btnCalenderDate_Click" Loaded="btnCalenderDate_Loaded" Height="18" FontSize="10" FontWeight="Bold">
</Button>
<TextBlock OpacityMask="Black" Name="txtBlockdays" VerticalAlignment="Top" TextWrapping="Wrap">
</TextBlock>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
<!-- ItemContainerStyle -->
<ItemsControl.ItemContainerStyle>
<Style >
<Setter Property="Grid.Column" Value="{Binding WeekDay}" />
<Setter Property="Grid.Row" Value="{Binding WeekNo}" />
</Style>
</ItemsControl.ItemContainerStyle>
制造压光机的类(class)。
public partial class SchedulePage : Page, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
MainWindow _parentForm;
Schedule sched = new Schedule();
DateTime date = DateTime.Now;
Event newevent;
public SchedulePage(MainWindow parentForm)
{
InitializeComponent();
_parentForm = parentForm;
DateTime date = DateTime.Now; //These couple of lines determine the current month to show on startup.
_numValue = date.Month;
_numYear = date.Year;
//int year = date.Year;
_nameofmonth = NumValue;
_nameofyear = NumYear;
lblcurrentdate.Content = date.Month + "/ " + date.Day + "/ " + date.Year;
makeCalender();
}
//The region below are properties that are passed in to makeCalender() when the DateRight and DateLeft buttons
// get clicked theses values change. The properties hold the month and the year. Everytime a user
// clicks forward or backward to the next month, these values equal to the selected current month & year.
// However, Everytime these values change a new calender is made and the old one is cleared(deleted).
#region
// properties
public void NotifyPropertyChanged(String info)
{
// if (PropertyChanged != null)
// {
PropertyChanged(this, new PropertyChangedEventArgs(info));
//}
}
private int _numValue;
public int NumValue
{
get { return _numValue; }
set
{
_numValue = value;
}
}
private int _numYear;
public int NumYear
{
get { return _numYear; }
set
{
_numYear = value;
}
}
private int _nameofmonth ;
public int NameofMonth
{
get
{
return this._nameofmonth;
}
set
{
if (value != this._nameofmonth)
{
this._nameofmonth = value;
NotifyPropertyChanged("NameofMonth");
} return;
}
}
private int _nameofyear;
public int NameofYear
{
get
{
return this._nameofyear;
}
set
{
if (value != this._nameofyear)
{
this._nameofyear = value;
NotifyPropertyChanged("NameofYear");
} return;
}
}
#endregion //end of properties
//void TheViewModel_PropertyChanged(object src, PropertyChangedEventArgs e)
/*
{
_parentForm.bindings.schedule.Clear();
_nameofmonth = NumValue;//comboMonth.SelectedIndex + 1;
_nameofyear = comboYear.SelectedIndex + 2011;
makeCalender();
} */
// makeCalender() is how the calender is created and how it determines the gridcell layout of each month.
public void makeCalender() {
var t = new List<Schedule>();
DateTime curr = DateTime.Now;
int[] m = new int[7];
DateTime newcurr = new DateTime(NameofYear, NameofMonth, 1);
var cal = System.Globalization.DateTimeFormatInfo.CurrentInfo.Calendar;
var ms = cal.GetWeekOfYear(new DateTime(newcurr.Year, newcurr.Month, 1), System.Globalization.CalendarWeekRule.FirstDay, System.DayOfWeek.Sunday);
for (int k = 0; k < 7; k++)
{
for (var i = 1; newcurr.Month == NameofMonth; newcurr = newcurr.AddDays(1))
{
var month_week = (newcurr.Day / 7);
sched.MonthWeek = newcurr.GetWeekOfMonth().ToString();
sched.Month = newcurr.Month.ToString();
sched.Year = newcurr.Year.ToString();
sched.day = newcurr.Day.ToString();
sched.WeekOfYear = cal.GetWeekOfYear(newcurr, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString();
sched.dayofweek = newcurr.DayOfWeek.ToString();
t.Add(sched);
//Here is where the calender is created. By looping through all the days in the selected month it will find the weeknumber and day of the week -->
// that that particular date belongs to and place in the correct gridcell.
_parentForm.bindings.schedule.Add(new Schedule { WeekNo = newcurr.GetWeekOfMonth() - 1, WeekDay = (int)newcurr.DayOfWeek, day = newcurr.Day.ToString() });
lblDate.Content = getMonth(newcurr.Month) + " " + newcurr.Year; //getMonth() determines string format of current month displayed.
}
}
DataContext = _parentForm.bindings;
}
// btnDateRight_Click allows us to navigate forward to the next month, if current month is -->
// december then the current year is incremented and the month starts on january (NumValue = 01)
private void btnDateRight_Click(object sender, RoutedEventArgs e)
{
_parentForm.bindings.schedule.Clear();
if (NumValue >= 1 && NumValue < 12)
{
NumValue += 1;
_nameofmonth = NumValue;
} else
{
NumYear += 1;
_nameofyear = NumYear;
NumValue = 01;
_nameofmonth = NumValue;
}
makeCalender();
}
// btnDateLeft_Click allows us navigate backwards to a previous month
// if navigating back and the current month is january, then the year is deincremented the current month is -->
// set to December (NumValue = 12)
private void btnDateLeft_Click(object sender, RoutedEventArgs e)
{
_parentForm.bindings.schedule.Clear();
if (NumValue > 1 && NumValue <= 12)
{
NumValue -= 1;
_nameofmonth = NumValue;
}
else
{
NumYear -= 1;
_nameofyear = NumYear;
NumValue = 12;
_nameofmonth = NumValue;
}
makeCalender();
}
// btnCalenderDate_Click (as of 11/5/2011) will only return the current month, day, year in messagebox
// --> Problem is displaying an event on the textblock(gridcell) of the selected button(date). -->
// Example: If I click on the button 5 of november 2011(11/5/2011) I should be able to make an event
// and display the title of the event on that pictular gridcell of 11/5/2011.
private void btnCalenderDate_Click(object sender, RoutedEventArgs e)
{
Button b = e.Source as Button;
int day = Convert.ToInt32(b.Content);
MessageBox.Show(NumValue + "/" + b.Content + "/" + NumYear);
//b.Content = "123";
newevent = new Event(NumValue, day, NumYear);
newevent.Show();
}
//btnCalenderDate_Loaded will determine todays date and highlight the button.
private void btnCalenderDate_Loaded(object sender, RoutedEventArgs e) //Sets the current day on the calender
{
DateTime date = DateTime.Now;
Button today = e.Source as Button;
if (NumValue == date.Month && (String)today.Content == date.Day.ToString() && NumYear == date.Year)
{
today.Background = Brushes.Aqua;
}
}
最佳答案
我不太确定您要做什么,但您是否考虑过使用 DataGrid.HitTest Method这可能是更好的方法。您可以使用鼠标点作为 HitTest 参数,它会为您提供行和列。
关于c# - 为自定义日历 WPF 创建事件/约会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022929/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!