gpt4 book ai didi

c# - WPF C# 中的日历控件事件问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:13 34 4
gpt4 key购买 nike

我正在尝试将 TextBox 绑定(bind)到 Calendar 控件上的选定日期,并且在它初始化时没有问题。问题是,当我更改所选日期之后,TextBox 仍保持其初始值(今天)。我已经尝试了 3 种方法,包括简单地返回到 TextBox.Text = Calendar.DisplayDate.ToString(),但问题仍然存在。

有没有人知道是什么原因造成的,或者解决方法?

请注意,PropertyChanged 在方法 2 中不为 null。

我的代码如下,实现了另外两个方法:

XAML:

<Calendar Grid.Column="1" Height="170" HorizontalAlignment="Left" Name="calStart" VerticalAlignment="Top"  Width="180" IsTodayHighlighted="False" SelectedDatesChanged="CalStartSelectedDatesChanged">
<Calendar.CalendarDayButtonStyle>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Converter={StaticResource conv}}" Value="1">
<Setter Property="Button.Background" Value="LightGreen" />

</DataTrigger>
</Style.Triggers>
</Style>
</Calendar.CalendarDayButtonStyle>
</Calendar>
<TextBox Height="23" HorizontalAlignment="Left" Margin="34,33,0,0" Text="{Binding StartBindProp, Mode=OneWay}" Name="txtStartDate" VerticalAlignment="Top" Width="120" Grid.Column="1" Grid.Row="1" />

C#方法一:

private void CalStartSelectedDatesChanged(object sender, SelectionChangedEventArgs e)
{
StartBindProp = calStart.DisplayDate.ToString();
}


public string StartBindProp
{
get { return (string)GetValue(StartBindPropProperty); }
set { SetValue(StartBindPropProperty, value); }
}

// Using a DependencyProperty as the backing store for StartBindProp. This enables animation, styling, binding, etc...
public static readonly DependencyProperty StartBindPropProperty =
DependencyProperty.Register("StartBindProp", typeof(string), typeof(MainControl), new UIPropertyMetadata(""));

方法二:

 private void CalEndSelectedDatesChanged(object sender, SelectionChangedEventArgs e)
{
EndBind = calEnd.DisplayDate.ToString();
}

private string m_EndBind = "endtest";


public string EndBind
{
get { return m_EndBind; }
set
{
m_EndBind = value;

if (null != PropertyChanged)
{
PropertyChanged(this, new PropertyChangedEventArgs("EndBind"));
}
}
}

感谢您的帮助!

编辑:以下 xaml 具有相同的问题(并且显然将日历呈现为只读):

<TextBox Text="{Binding ElementName=calStart, Path=DisplayDate, Mode=OneWay}" />

最佳答案

使用 Calendar.SelectedDate(或 SelectedDates 如果有多个)而不是 DisplayDate

我相信 DisplayDate 用于确定日历中哪个日期周围有“选定”轮廓(因为可以选择多个日期),而 SelectedDate 是控件的实际值。

您可以在日历控件上找到 MSDN 文档 here

关于c# - WPF C# 中的日历控件事件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7810526/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com