Я пытаюсь привязать TextBox к выбранной дате в элементе управления Calendar, и при его инициализации проблем не возникает.Проблема в том, что после того, как я изменю выбранную дату, TextBox останется в своем первоначальном значении (сегодня).Я пробовал 3 метода, в том числе просто вернуться к TextBox.Text = Calendar.DisplayDate.ToString (), но проблема остается.
Кто-нибудь знает, что является причиной, или как ее обойти?
Обратите внимание, что PropertyChanged не равен нулю в методе 2.
Мой код выглядит следующим образом, среализованы два других метода:
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 # Метод 1:
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(""));
Метод 2:
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"));
}
}
}
Спасибо заhelp!
РЕДАКТИРОВАТЬ: следующий xaml имеет ту же проблему (и, по-видимому, делает календарь только для чтения):
<TextBox Text="{Binding ElementName=calStart, Path=DisplayDate, Mode=OneWay}" />