亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從依賴屬性生成自定義項控件作為 UserControl 中的項源

從依賴屬性生成自定義項控件作為 UserControl 中的項源

C#
慕雪6442864 2023-09-09 16:16:41
我正在制作一個 UserControl 以從依賴項屬性生成附加文件列表作為 ItemSource。但 ItemSource (DependencyProperty) 計數為 0。我嘗試調試并意識到 ViewModel 中的 ObservableCollection 是在 UserControl 的構造函數初始化后綁定的。我正在以 MVVM 模式進行編碼,我創建了一個函數來為 ViewModel 中的 ObservableCollection 準備一些示例數據,并在 MainWindow 內將 UserControl 的 DataContext 與該 ViewModel 綁定,然后為 ObservableCollection 設置 ItemSource我的 ViewModel 代碼隱藏://The properties  ObservableCollection<FileAttachmentModel> filesAttachment;        public ObservableCollection<FileAttachmentModel> FilesAttachment        {            get { return filesAttachment; }            set { filesAttachment = value; OnPropertyChanged("FilesAttachment"); }        }//The function prepare sample data private ObservableCollection<FileAttachmentModel> PrepareData()        {            FilesAttachment.Add(new FileAttachmentModel() { FileName = "TrackA", FilePath = "D:\trackA.png" });            FilesAttachment.Add(new FileAttachmentModel() { FileName = "TrackB", FilePath = "D:\trackB.png" });            FilesAttachment.Add(new FileAttachmentModel() { FileName = "TrackC", FilePath = "D:\trackC.png" });        }我的用戶控件 xaml:<UserControl x:Class="MailSender.Controls.FileAttachment.FileAttachment"             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"              xmlns:local="clr-namespace:MailSender.Controls.FileAttachment"                         mc:Ignorable="d"              d:DesignHeight="450" d:DesignWidth="800"              DataContext="{Binding RelativeSource={RelativeSource Self}}"             Name="fileAttachmentUC"             >使用中:<control:FileAttachment DataContext="{StaticResource vmMainWindow}" ItemSource="{Binding FilesAttachment,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>我期望的是為附加文件制作一個容器,例如 Microsoft 的 Outlook。請幫忙!提前致謝!
查看完整描述

1 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

GenerateFileItem每當使用以下方法設置依賴項屬性時,您都應該調用PropertyChangedCallback:


public static readonly DependencyProperty ItemSourceProperty = DependencyProperty.Register("ItemSource",

    typeof(ObservableCollection<FileAttachmentModel>), typeof(FileAttachment), new PropertyMetadata(new PropertyChangedCallback(OnChanged));


//the wrapper property

public ObservableCollection<FileAttachmentModel> ItemSource

{

    get { return (ObservableCollection<FileAttachmentModel>)GetValue(ItemSourceProperty); }

    set { SetValue(ItemSourceProperty, value); }

}


private static void OnChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

{

    FileAttachment fa = (FileAttachment)d;

    fa.GenerateFileItem(fa.ItemSource);

}

在初始化ItemSource之前無法設置該屬性。UserControl


查看完整回答
反對 回復 2023-09-09
  • 1 回答
  • 0 關注
  • 107 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號