WPF 中的波斯语日记






4.81/5 (49投票s)
使用波斯日记,您可以在波斯日历中导航并存储您的备忘录

引言
使用此软件,您可以浏览波斯日历,并且可以为每一天添加您的备忘录。
Using the Code
我使用 .NET Framework 3.5 SP1 创建了这个项目,所以您需要安装它才能使用这个项目。
我还使用了一个 SQL 数据库 (mdf) 来存储数据,所以您至少需要安装 SQL Express 2008。
创建用户界面
创建像这样的软件 UI 的最佳方法是使用 Stack。

然后我们应该在 Stack 中使用 UniformGrids 和 Grids 来创建 UI。
例如,上图中 1 的 XAML 代码是
<StackPanel x:Name="stackPanel">
<StackPanel.BitmapEffect>
<BlurBitmapEffect Radius="0"/>
</StackPanel.BitmapEffect>
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Center"
x:Name="header" MinHeight="70">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.135*"/>
<ColumnDefinition Width="0.102*"/>
<ColumnDefinition Width="0.494*"/>
<ColumnDefinition Width="0.14*"/>
<ColumnDefinition Width="0.129*"/>
</Grid.ColumnDefinitions>
<TextBlock FlowDirection="RightToLeft" Language="fa-ir"
FontSize="36" x:Name="TextBlockThisMonth" HorizontalAlignment="Center"
Grid.Column="2" VerticalAlignment="Center" Margin="0,0,0,0"
FontFamily="Arial">تاریخ</TextBlock>
<Button x:Name="previousMonth" Content=" ماه قبل > "
Grid.Column="3" VerticalAlignment="Center" Click="previousMonth_Click"
HorizontalAlignment="Center" />
<Button x:Name="nextMonth" Content=" < ماه بعد " Grid.Column="1"
HorizontalAlignment="Center" VerticalAlignment="Center"
Click="nextMonth_Click" />
<Button x:Name="previousYear" Content=" سال قبل >> "
Grid.Column="4" HorizontalAlignment="Center" VerticalAlignment="Center"
Click="previousYear_Click" />
<Button x:Name="nextYear" Content=" << سال بعد "
HorizontalAlignment="Center" Click="nextYear_Click"
VerticalAlignment="Center" />
</Grid>
<UniformGrid Columns="7" Rows="1" x:Name="dayNames" MinHeight="30">
<Grid>
<Rectangle Style="{DynamicResource RectangleStyleForHolydays}"/>
<TextBlock HorizontalAlignment="Center"
VerticalAlignment="Center"><Run FlowDirection="RightToLeft"
Language="fa-ir" Text="جمعه"/></TextBlock>
</Grid>
<Grid>
<Rectangle Style="{DynamicResource RectangleStyle1}"/>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
FontSize="14"><Run FlowDirection="RightToLeft" Language="fa-ir"
Text="پنج شنبه"/></TextBlock>
</Grid>
<Grid>
<Rectangle Style="{DynamicResource RectangleStyle1}"/>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
FontSize="14"><Run FlowDirection="RightToLeft" Language="fa-ir"
Text="چهار شنبه"/></TextBlock>
</Grid>
<Grid>
<Rectangle Style="{DynamicResource RectangleStyle1}"/>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
FontSize="14"><Run FlowDirection="RightToLeft" Language="fa-ir"
Text="سه شنبه"/></TextBlock>
</Grid>
<Grid>
<Rectangle Style="{DynamicResource RectangleStyle1}"/>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
FontSize="14"><Run FlowDirection="RightToLeft" Language="fa-ir"
Text="دو شنبه"/></TextBlock>
</Grid>
<Grid>
<Rectangle Style="{DynamicResource RectangleStyle1}"/>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
FontSize="14"><Run FlowDirection="RightToLeft" Language="fa-ir"
Text="یک شنبه"/></TextBlock>
</Grid>
<Grid>
<Rectangle Style="{DynamicResource RectangleStyle1}" />
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
FontSize="14"><Run FlowDirection="RightToLeft" Language="fa-ir"
Text="شنبه"/></TextBlock>
</Grid>
</UniformGrid>
<!-- *********************************************************** -->
(The XAML of 2)
.
.
.
</StackPanel>
上图中 2 的 XAML 代码是
<UniformGrid Columns="7" Rows="1" Margin="0,10,0,0"
x:Name="calendarRow01" MinHeight="80">
<Grid x:Name="GridJome0" Style="{DynamicResource GridStyle}">
<Rectangle x:Name="RectangleJome0"
Style="{DynamicResource RectangleStyleForHolydays}" />
<TextBlock x:Name="TextBlockJome0Miladi"
Style="{DynamicResource TextBlockStyle6}">08 Dec</TextBlock>
<TextBlock x:Name="TextBlockJome0Hijri"
Style="{DynamicResource TextBlockStyle10}">۰۱ محرم</TextBlock>
<TextBlock x:Name="TextBlockJome0"
Style="{DynamicResource TextBlockStyle1}">جمعه</TextBlock>
</Grid>
<Grid x:Name="Grid5Shanbe0" Style="{DynamicResource GridStyle}">
<Rectangle x:Name="Rectangle5Shanbe0"
Style="{DynamicResource RectangleStyle2}" />
<TextBlock x:Name="TextBlock5Shanbe0Miladi" Text="08 Dec"
Style="{DynamicResource TextBlockStyle6}"/>
<TextBlock x:Name="TextBlock5Shanbe0Hijri" Text="۰۱ محرم"
Style="{DynamicResource TextBlockStyle10}"/>
<TextBlock x:Name="TextBlock5Shanbe0"
Style="{DynamicResource TextBlockStyle1}">پنج شنبه</TextBlock>
</Grid>
<Grid x:Name="Grid4Shanbe0" Style="{DynamicResource GridStyle}">
<Rectangle x:Name="Rectangle4Shanbe0"
Style="{DynamicResource RectangleStyle2}" />
<TextBlock x:Name="TextBlock4Shanbe0Miladi" Text="08 Dec"
Style="{DynamicResource TextBlockStyle6}"/>
<TextBlock x:Name="TextBlock4Shanbe0Hijri" Text="۰۱ محرم"
Style="{DynamicResource TextBlockStyle10}"/>
<TextBlock x:Name="TextBlock4Shanbe0"
Style="{DynamicResource TextBlockStyle1}">چهار شنبه</TextBlock>
</Grid>
<Grid x:Name="Grid3Shanbe0" Style="{DynamicResource GridStyle}">
<Rectangle x:Name="Rectangle3Shanbe0"
Style="{DynamicResource RectangleStyle2}" />
<TextBlock x:Name="TextBlock3Shanbe0Miladi" Text="08 Dec"
Style="{DynamicResource TextBlockStyle6}"/>
<TextBlock x:Name="TextBlock3Shanbe0Hijri" Text="۰۱ محرم"
Style="{DynamicResource TextBlockStyle10}"/>
<TextBlock x:Name="TextBlock3Shanbe0"
Style="{DynamicResource TextBlockStyle1}">سه شنبه</TextBlock>
</Grid>
<Grid x:Name="Grid2Shanbe0" Style="{DynamicResource GridStyle}">
<Rectangle x:Name="Rectangle2Shanbe0"
Style="{DynamicResource RectangleStyle2}" />
<TextBlock x:Name="TextBlock2Shanbe0Miladi" Text="08 Dec"
Style="{DynamicResource TextBlockStyle6}"/>
<TextBlock x:Name="TextBlock2Shanbe0Hijri" Text="۰۱ محرم"
Style="{DynamicResource TextBlockStyle10}"/>
<TextBlock x:Name="TextBlock2Shanbe0"
Style="{DynamicResource TextBlockStyle1}">دو شنبه</TextBlock>
</Grid>
<Grid x:Name="Grid1Shanbe0" Style="{DynamicResource GridStyle}">
<Rectangle x:Name="Rectangle1Shanbe0"
Style="{DynamicResource RectangleStyle2}" />
<TextBlock x:Name="TextBlock1Shanbe0Miladi"
Style="{DynamicResource TextBlockStyle6}" Text="08 Dec" Margin="0,0,10,5"/>
<TextBlock x:Name="TextBlock1Shanbe0Hijri"
Style="{DynamicResource TextBlockStyle10}" Text="۰۱ محرم" />
<TextBlock x:Name="TextBlock1Shanbe0"
Style="{DynamicResource TextBlockStyle1}">یک شنبه</TextBlock>
</Grid>
<Grid x:Name="GridShanbe0" Style="{DynamicResource GridStyle}">
<Rectangle x:Name="RectangleShanbe0"
Style="{DynamicResource RectangleStyle2}" />
<TextBlock x:Name="TextBlockShanbe0"
Style="{DynamicResource TextBlockStyle1}" >شنبه</TextBlock>
<TextBlock x:Name="TextBlockShanbe0Miladi" Text="08 Dec"
Style="{DynamicResource TextBlockStyle6}"/>
<TextBlock x:Name="TextBlockShanbe0Hijri" Text="۰۱ محرم"
Style="{DynamicResource TextBlockStyle10}"/>
</Grid>
</UniformGrid>
上图中 3 的 XAML 代码是
<Grid x:Name="Grid5Shanbe0" Style="{DynamicResource GridStyle}">
<Rectangle x:Name="Rectangle5Shanbe0"
Style="{DynamicResource RectangleStyle2}" />
<TextBlock x:Name="TextBlock5Shanbe0Miladi" Text="08 Dec"
Style="{DynamicResource TextBlockStyle6}"/>
<TextBlock x:Name="TextBlock5Shanbe0Hijri" Text="۰۱ محرم"
Style="{DynamicResource TextBlockStyle10}"/>
<TextBlock x:Name="TextBlock5Shanbe0"
Style="{DynamicResource TextBlockStyle1}">پنج شنبه</TextBlock>
</Grid>
上图中 4 的 XAML 代码是
<Grid x:Name="footer" MinHeight="70">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.121*"/>
<ColumnDefinition Width="0.132*"/>
<ColumnDefinition Width="0.07*"/>
<ColumnDefinition Width="0.119*"/>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="0.084*"/>
<ColumnDefinition Width="0.064*"/>
<ColumnDefinition Width="0.11*"/>
</Grid.ColumnDefinitions>
<Button x:Name="goToToday" Content=" پرش به امروز "
Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"
Click="goToToday_Click" />
<WindowsFormsHost Grid.Column="0" FontSize="13" VerticalAlignment="Center"
HorizontalAlignment="Center" Width="70" Height = "25">
<wf:MaskedTextBox Text="سال" x:Name="textBoxYear" Mask="0000"/>
</WindowsFormsHost>
<ComboBox Grid.Column="1" FontSize="13" HorizontalAlignment="Center"
VerticalAlignment="Center" IsSynchronizedWithCurrentItem="True"
Width="85" x:Name="comboBoxMonths">
<ComboBoxItem Content="فروردین" IsSelected="True"/>
<ComboBoxItem Content="اردیبهشت"/>
<ComboBoxItem Content="خرداد"/>
<ComboBoxItem Content="تیر"/>
<ComboBoxItem Content="مرداد"/>
<ComboBoxItem Content="شهریور"/>
<ComboBoxItem Content="مهر"/>
<ComboBoxItem Content="آبان"/>
<ComboBoxItem Content="آذر"/>
<ComboBoxItem Content="دی"/>
<ComboBoxItem Content="بهمن"/>
<ComboBoxItem Content="اسفند"/>
</ComboBox>
<Button x:Name="goToDate" Content=" برو " Grid.Column="2"
VerticalAlignment="Center" HorizontalAlignment="Center"
Click="goToDate_Click" />
<TextBlock Text="تنظیم ماه قمری" Grid.Column="7" HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<TextBox x:Name="TextBoxHijriAdjustment" Text="" Grid.Column="6"
HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="30" />
<Button x:Name="ButttonHijriAdjustment" Content=" تنظیم "
Grid.Column="5" HorizontalAlignment="Center" VerticalAlignment="Center"
Click="ButttonHijriAdjustment_Click" />
</Grid>
我还创建了几个 Storyboard
来显示和隐藏下面的面板。
这个面板使用您的输入数据更新数据库。

Storyboard
的 XAML 如下所示
<Storyboard x:Key="showEventGrid">
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="EventGrid"
Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00"
Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.5000000"
Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="EventGrid"
Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<ThicknessAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="EventGrid" Storyboard.TargetProperty
="(FrameworkElement.Margin)">
<SplineThicknessKeyFrame KeyTime="00:00:00" Value="0,0,0,0"/>
<SplineThicknessKeyFrame KeyTime="00:00:00.5000000" Value="0,0,0,0"/>
</ThicknessAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="stackPanel"
Storyboard.TargetProperty="(UIElement.BitmapEffect)
.(BlurBitmapEffect.Radius)">
<SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="6"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="hideEventGrid">
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="EventGrid"
Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00.5000000"
Value="{x:Static Visibility.Hidden}"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="EventGrid"
Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="stackPanel"
Storyboard.TargetProperty="(UIElement.BitmapEffect).(BlurBitmapEffect.Radius)">
<SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0"/>
</DoubleAnimationUsingKeyFrames>
<ThicknessAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="EventGrid"
Storyboard.TargetProperty="(FrameworkElement.Margin)">
<SplineThicknessKeyFrame KeyTime="00:00:00.5000000" Value="0,0,0,0"/>
</ThicknessAnimationUsingKeyFrames>
</Storyboard>
C# 代码
在波斯日历中,我们有 12 个月,我已在以下代码段中显示
//Season { MonthName(nomber of days in the month) ...}
Spring { Farvardin(31), OrdiBehesht(31), Khordad(31) }
Summer { Tir(31), Mordad(31), Shahrivar(31) }
Autumn { Mehr(30), Aban(30), Azar(30) }
Winter { Day(30), Bahman(30), Esfand(30 or 29) }
幸运的是,.NET 中有一个用于创建波斯日历的类,我使用了它。
PersianCalendar persianCalendar = new PersianCalendar();
此项目中创建波斯月份的主要方法是 calculateMonth
。
/// <summary>
/// The main method to show the calendar
/// This method shows `thisMonth` in `thisYear`
/// </summary>
void calculateMonth(int thisYear, int thisMonth)
{
try
{
yearForNavigating = thisYear;
monthForNavigating = thisMonth;
DateTime tempDateTime = persianCalendar.ToDateTime(yearForNavigating,
monthForNavigating, 15, 01, 01, 01, 01);
int thisDay = 1;
TextBlockThisMonth.Text = "";
TextBlockThisMonth.Text =
monthForNavigating.convertToPersianMonth() + " " +
yearForNavigating.convertToPersianNumber();
//Different between first place of calendar and first place of this month
//اختلاف بین خانه شروع ماه و اولین خانه تقویم
string DayOfWeek = persianCalendar.GetDayOfWeek(persianCalendar.
ToDateTime(thisYear, thisMonth, 01, 01, 01, 01, 01)).ToString();
int span = calculatePersianSpan(DayOfWeek.convertToPersianDay());
decreasePersianDay(ref thisYear, ref thisMonth, ref thisDay, span);
string persianDate;//حاوی تاریخ روزهای شمسی Contains the date of Persian
string miladiDate;//حاوی تاریخ روزهای میلادی Contains the date of Christian
string hijriDate;//حاوی تاریخ روزهای قمری Contains the date of Hijri
string tooltip_context = "";//Contains the text of tooltip
////////////////////////////////////
for (int i = 0; i < 6 * 7; i++)
{
tempDateTime = persianCalendar.ToDateTime(thisYear, thisMonth,
thisDay, 01, 01, 01, 01);
miladiDate = tempDateTime.Day.ToString() + " " +
englishMonthName(tempDateTime.Month)
+ " " + tempDateTime.Year.ToString();
hijriDate = hijriCalendar.GetDayOfMonth
(tempDateTime).convertToPersianNumber()
+ " " + hijriCalendar.GetMonth
(tempDateTime).convertToHigriMonth() + " "
+ hijriCalendar.GetYear(tempDateTime).convertToPersianNumber();
persianDate = thisDay.convertToPersianNumber();
DayOfWeek = persianCalendar.GetDayOfWeek(tempDateTime).ToString();
if (thisMonth == monthForNavigating)
{
tooltip_context = "";
if (thisDay == currentDay && thisMonth == currentMonth &&
thisYear == currentYear)//بررسی تاریخ امروز
{
tooltip_context = GetTextOfMemo
(thisYear, thisMonth, thisDay, "Shamsi");
if (tooltip_context == "")
tooltip_context = GetTextOfMemo(tempDateTime.Year,
tempDateTime.Month,
tempDateTime.Day, "Miladi");
if (tooltip_context == "")
tooltip_context = GetTextOfMemo
(hijriCalendar.GetYear(tempDateTime),
hijriCalendar.GetMonth(tempDateTime),
hijriCalendar.GetDayOfMonth(tempDateTime), "Hijri");
if (DayOfWeek.convertToPersianDay() == "جمعه")//بررسی جمعه بودن روز
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyleForHolydays_CurrentDay", "TextBlockStyle3",
"TextBlockStyle12", "TextBlockStyle8", tooltip_context);
else
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyleToday",
"TextBlockStyle5", "TextBlockStyle10",
"TextBlockStyle6", tooltip_context);
}
else if (searchShamsiTable(thisYear, thisMonth, thisDay))
{
tooltip_context = GetTextOfMemo
(thisYear, thisMonth, thisDay, "Shamsi");
if (isHoliday(thisYear, thisMonth, thisDay, "Shamsi"))
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyle5", "TextBlockStyle3", "TextBlockStyle12",
"TextBlockStyle8", tooltip_context);
else
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyle4", "TextBlockStyle1", "TextBlockStyle10",
"TextBlockStyle6", tooltip_context);
}
else if (searchHijriTable(hijriCalendar.GetYear(tempDateTime),
hijriCalendar.GetMonth(tempDateTime),
hijriCalendar.GetDayOfMonth(tempDateTime)))
{
tooltip_context = GetTextOfMemo
(hijriCalendar.GetYear(tempDateTime),
hijriCalendar.GetMonth(tempDateTime), hijriCalendar.
GetDayOfMonth(tempDateTime), "Hijri");
if (isHoliday(thisYear, thisMonth, thisDay, "Hijri"))
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyle5", "TextBlockStyle3", "TextBlockStyle12",
"TextBlockStyle8", tooltip_context);
else
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyle4", "TextBlockStyle5", "TextBlockStyle10",
"TextBlockStyle6", tooltip_context);
}
else if (searchMiladiTable(tempDateTime.Year, tempDateTime.Month,
tempDateTime.Day))
{
tooltip_context = GetTextOfMemo
(tempDateTime.Year, tempDateTime.Month,
tempDateTime.Day, "Miladi");
if (isHoliday(thisYear, thisMonth, thisDay, "Miladi"))
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyle5", "TextBlockStyle3", "TextBlockStyle12",
"TextBlockStyle8", tooltip_context);
else
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyle4", "TextBlockStyle5", "TextBlockStyle10",
"TextBlockStyle6", tooltip_context);
}
else
{
if (DayOfWeek.convertToPersianDay() ==
"جمعه")//بررسی جمعه بودن روز
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyleForHolydays", "TextBlockStyle3",
"TextBlockStyle12",
"TextBlockStyle8", tooltip_context);
else
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyle2", "TextBlockStyle5", "TextBlockStyle10",
"TextBlockStyle6", tooltip_context);
}
}
else
{
if (DayOfWeek.convertToPersianDay() == "جمعه")//بررسی جمعه بودن روز
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyleForOtherHolydays", "TextBlockStyle4",
"TextBlockStyle13", "TextBlockStyle9", tooltip_context);
else
changeProperties(i, persianDate, hijriDate, miladiDate,
"RectangleStyle3",
"TextBlockStyle2", "TextBlockStyle11", "TextBlockStyle7",
tooltip_context);
}
increasePersianDay(ref thisYear, ref thisMonth, ref thisDay, 1);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Exception", MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
然后我使用 LINQ 来更新数据库。
首先,我添加了一个 LINQ to SQL 类

然后我设计了 DataClasses1.dbml

然后我们可以使用 LINQ 查询轻松更新数据库。
例如,我编写了这个方法来搜索 shamsi
表。
/// <summary>
/// Searches the Database shamsi table
/// </summary>
/// <returns>If the input data is found in the table return true, else
/// return false</returns>
bool searchShamsiTable(int year, int month, int day)
{
bool result = false;
try
{
int? id = null;
id = (from q in db.shamsis
where (q.year == year && q.day == day && q.month == month)
|| (q.anniversary == true && q.month == month && q.day == day)
select q.id).First();
if (id != null) result = true;
}
catch { result = false; }
return result;
}
有关 LINQ to SQL 的更多信息可以在 这里 找到。
其他方法都很简单易学,我用一些注释解释了它们。
看点
这个项目中我感兴趣的一点是,在 WPF 中使用 WinForm 控件。
我使用 WinForm Masked TextBox 来输入年份。
为了在 WPF 应用程序中使用 WinForm Masked TextBox:我将这些 DLL 添加到我的引用中
- WindowsFormsIntegration.dll
- System.Windows.Forms.dll
然后我在 XAML 源代码中的 Window
标签内添加了以下行
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
最后,我使用
WindowsFormsHost
标签将 MaskedTextBox
控件添加到我的 WPF 应用程序中。<WindowsFormsHost Grid.Column="0" FontSize="13"
VerticalAlignment="Center" HorizontalAlignment="Center"
Width="70" Height = "25">
<wf:MaskedTextBox x:Name="textBoxYear" Mask="0000"/>
</WindowsFormsHost>
有关 WindowsFormHost
的更多信息可以在 这里 找到。
历史
- 2009 年 2 月 12 日:第一篇帖子
- 2010 年 1 月 6 日:数据库已更改为 XML 文件,并且已解决了一些错误。