我正在使用格式豐富的ListBox的應用程序。我需要的一件事就是將多條信息綁定到ListBox的DataTemplate中的按鈕。WPF - DataTemplate - 在附加屬性中使用元素綁定
這是我爲了幫助你理解問題所做的實際代碼的過度簡化。
這裏是XAML的一大塊從工作原理的DataTemplate內:
<Button Command="local:MediaCommands.StreamVideo"
CommandParameter="{Binding Path=Folder}" />
當我按下按鈕,它發出,這份名單是根據各地的數據項的Folder
財產(的ItemsSource
成員說當前列表項目正在顯示)。但是,我需要另一塊數據,即當前項目的Filename
屬性。爲了達到這個目的,我創建了一個新類FileInfo
,它包含Folder
和Filename
的依賴項屬性。
<Button Command="local:MediaCommands.StreamVideo">
<Button.CommandParameter>
<data:FileInfo Folder="{Binding Path=Folder}"
Filename="{Binding Path=Filename}" />
</Button.CommandParameter>
</Button>
但是,我的代碼是給我的唯一的事情是一個空白FileInfo
對象:然後,我之前更換了XAML代碼。請注意,如果我將上面的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
中抽取數據,但問題是一樣的),任何人都可以看到這裏發生了什麼?我的依賴項屬性沒有被正確聲明?我是否需要對綁定做一些古怪的事情?
非常令人費解。有一件事可以幫助我找出綁定問題,即在Debug - > Exceptions - > Managed Debugging Assistants - > BindingFailure下啓用拋出的選項。也許調試器會告訴你一些有用的東西,如果你這樣做。 – Jacob 2010-09-20 20:09:31
我啓用了該功能,但沒有報告任何額外的內容。它一定是別的東西。 – Ethan 2010-09-20 20:31:58