我有一個Window
(去除不需要的部分)以下內容:WPF:是否有可能將下面的代碼從Procedural(C#)轉換爲Declarative(XAML)?
XAML:
<Style x:Key="itemstyle" TargetType="{x:Type ContentPresenter}">
<EventSetter Event="MouseLeftButtonDown" Handler="HandleItemClick"/>
</Style>
<ItemsControl ItemsSource="{Binding ArtistList}" Margin="10" Name="artist_list" ItemContainerStyle="{StaticResource itemstyle}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ID}" Foreground="White"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Controls:RSSViewer x:Name="rssControl" />
C#(代碼背後):
private void HandleItemClick(object sender, MouseButtonEventArgs e)
{
var selectedArtist = ((ContentPresenter) sender).Content as Artist;
rssControl.SourceUrl = "http://agnt666laptop:28666/rss.aspx?artistid=" + selectedArtist.ID;
}
現在我想要做的就是轉換上述xaml混合物nd C#的東西,純粹是純粹的xaml,利用WPF的DataBinding模型。
我認爲它需要類似事件觸發器和數據綁定與itemscontrol元素的選定項目或類似的東西的組合,但我不知道如何去做。
任何人都可以指導我如何轉換上述解決方案,以刪除程序代碼?
它不工作:System.Windows.Data錯誤:4:找不到與參考'ElementName = artist_list'綁定的源。 BindingExpression:路徑= SelectedItem.ID;的DataItem = NULL;目標元素是'RSSViewer'(Name ='rssControl');目標屬性是'SourceUrl'(類型'String') – 2009-05-17 03:23:54
我不認爲ItemsControl有一個SelectedItems屬性。如果你想選擇,你需要使用ListBox或ListView。 – Andy 2009-05-17 03:38:51
Andy的權利,ItemsControl沒有SelectedItem屬性...所以我們必須以另一種方式做 – 2009-05-17 03:46:11