gpt4 book ai didi

WPF-MVVM 将 ViewModel-Property 绑定(bind)到嵌套的 UserControl

转载 作者:行者123 更新时间:2023-12-04 21:47:36 26 4
gpt4 key购买 nike

正如标题所说,我想将我的 ViewModel 中的属性绑定(bind)到相应 View 中的嵌套 UserControl。我无法让它按我需要的方式工作。

嵌套的 UserControl 只不过是一个 DatePicker和一个 DropDown几个小时。我怎么知道 DatePicker选择 ViewModel 传播的日期作为其选定日期?

我几乎尝试了所有方法,现在离跳出窗外不远了。如您所见,我们将不胜感激;)

现在来看到目前为止的代码:DateTimePicker.xaml.cs (CodeBehind)

public partial class DateTimePicker
{
public static DependencyProperty SelectedDateValueProperty = DependencyProperty.Register("SelectedDateValue", typeof (DateTime), typeof (DateTimePicker), new FrameworkPropertyMetadata(default(DateTime), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnPropertyChangedCallback));

private static void OnPropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs args)
{
Debug.WriteLine("Wohoo. I'm here and still debugging...");
}

public DateTimePicker()
{
InitializeComponent();

DataContext = this;

var times = GetTimes();

Times.ItemsSource = times;
Times.SelectedItem = times.First();
}

public DateTime SelectedDateValue
{
get { return (DateTime) GetValue(SelectedDateValueProperty); }
set { SetValue(SelectedDateValueProperty, value); }
}
}

嵌套的 UserControl (DateTimePicker.xaml):

<UserControl x:Class="Framework.Controls.DateTimePicker"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="30" d:DesignWidth="200"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<DatePicker HorizontalAlignment="Left" Name="DatePickerCalendar" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Center" SelectedDate="{Binding SelectedDateValue}" />
<ComboBox Grid.Column="1" VerticalAlignment="Center" Name="Times" DisplayMemberPath="Name" />
</Grid>

最后但同样重要的是:具有嵌套 UserControl (View.xaml) 的 View

<CustomControls:DateTimePicker SelectedDateValue="{Binding LocalRegistrationStartDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

希望问题很清楚,任何人都可以帮助我或了解我在这里做错了什么。

最佳答案

使用:

"{Binding SelectedDateValue}"

告诉 WPF“嘿,检查我的 DataContext 是否有一个名为 SelectedDateValue 的属性”。

您想要的是,从您的用户控件中获取Property

最简单的方法是为您的用户控件命名,例如:

<UserControl x:Name="myControl"/>

然后将您的绑定(bind)修改为:

"{Binding ElementName=myControl, Path=SelectedDateValue}"

关于WPF-MVVM 将 ViewModel-Property 绑定(bind)到嵌套的 UserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212244/

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