[英]Why is my Dependency Property Binding is not working as expected?
我正在嘗試制作一個包含 ListView 的自定義 UserControl。 我想將 SelectedItem 屬性綁定到我的視圖 Model。 因此,我在我的用戶控件中創建了一個 DP,並將 ListView 的 SelectedItem 屬性綁定到新的 Dependency 屬性。
public static readonly DependencyProperty SelectedItemProperty = DependencyProperty.Register(
"SelectedItem",
typeof(object),
typeof(DragAndDropListView),
new PropertyMetadata(SelectedItemPropertyChangedCallback));
private static void SelectedItemPropertyChangedCallback(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
if (d is DragAndDropListView dragAndDropListView)
{
}
}
public object SelectedItem
{
get => GetValue(SelectedItemProperty);
set => SetValue(SelectedItemProperty, value);
}
然后在 xaml 代碼中,我進行了綁定
<ListView Name="ListView"
PreviewMouseLeftButtonDown="ListViewPreviewMouseLeftButtonDown"
AllowDrop="True"
MouseMove="ListViewMouseMove"
DragEnter="ListViewDragEnter"
Drop="ListViewDrop"
SelectedItem="{Binding Path= SelectedItem}"/>
為了確保它有效,我將 UserControl 作為 DataContext 分配給 ListView
public DragAndDropListView()
{
InitializeComponent();
ListView.ItemsSource = Items;
ListView.DataContext = this;
}
然后我在使用 UserControl 的地方添加了一個綁定。
<userControls:DragAndDropListView
Items="{Binding SelectedCustomers}"
SelectedItem="{Binding SelectedCustomer}"
DisplayMemberPath="Name"
Grid.Column="0"
Grid.Row="0"/>
如您所見,我認為我不需要 SelectedItemPropertyChangedCallback。 首先,我什至沒有實施它。 我后來添加了它以添加一個斷點以查看它是否有效。 當我 select 列表視圖中的一個項目時,它會調用回調。 但是我的 ViewModel 中的 SelectedCustomer 的設置器永遠不會被調用。
我希望這能奏效。 請幫助我理解我的錯誤。
綁定必須是雙向的:
SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"
您可以聲明該屬性,使其默認綁定 TwoWay:
public static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register(
nameof(SelectedItem),
typeof(object),
typeof(DragAndDropListView),
new FrameworkPropertyMetadata(
null,
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
SelectedItemPropertyChangedCallback));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.