[英]WPF - DataTemplate - Using element binding within an attached property
我正在使用格式豐富的ListBox的應用程序。 我需要做的一件事情是將多個信息綁定到位於ListBox的DataTemplate中的按鈕上。
這是我為幫助您了解問題而編寫的實際代碼的過度簡化。
這是可以工作的DataTemplate內部的XAML塊:
<Button Command="local:MediaCommands.StreamVideo"
CommandParameter="{Binding Path=Folder}" />
當我按下按鈕時,它將發送該列表所基於的數據項的Folder
屬性(當前列表項所顯示的ItemsSource
成員)。 但是,我需要另一條數據,即當前項目的Filename
屬性。 為此,我建立了一個新類FileInfo
,其中包含Folder
和Filename
依賴項屬性。 然后,我將XAML代碼替換為:
<Button Command="local:MediaCommands.StreamVideo">
<Button.CommandParameter>
<data:FileInfo Folder="{Binding Path=Folder}"
Filename="{Binding Path=Filename}" />
</Button.CommandParameter>
</Button>
但是,我的代碼向我發送的唯一內容是一個空白的FileInfo
對象。 請注意,如果我將上面的XAML更改為包含Folder
和Filename
文字值,則代碼可以正常工作,因為它可以正確創建FileInfo
對象並分配正確的屬性。
作為參考,我的FileInfo
類看起來像這樣:
class FileInfo : DependencyObject {
public static readonly DependencyProperty FolderProperty;
public static readonly DependencyProperty FilenameProperty;
static FileInfo() {
FolderProperty = DependencyProperty.Register("Folder",
typeof(string), typeof(FileInfo));
FilenameProperty = DependencyProperty.Register("Filename",
typeof(string), typeof(FileInfo));
}
public string Folder {
get { return (string) GetValue(FolderProperty); }
set { SetValue(FolderProperty, value); }
}
public string Filename {
get { return (string) GetValue(FilenameProperty); }
set { SetValue(FilenameProperty, value); }
}
}
在這種情況下,我可以忽略對數據對象本身的引用(在我的實際應用程序中,我需要從幾個嵌套的ListBox
繪制數據,但問題是相同的),任何人都可以看到在這里嗎? 我的依賴屬性是否未正確聲明? 我需要對綁定做一些古怪的事情嗎?
未明確聲明Source的綁定依賴於DataContext作為其Source。 您尚未在FileInfo實例上聲明DataContext,這通常意味着將使用繼承的DataContext。 DataContext繼承取決於FrameworkElement和運行時視覺樹,當您使用分配給不顯示在樹中的屬性的非FrameworkElement派生類時,兩者都不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.