c#-使用数据绑定访问DataTemplate内部的WPF组件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-使用数据绑定访问DataTemplate内部的WPF组件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1709字,纯文字阅读大概需要3分钟。
内容图文
![c#-使用数据绑定访问DataTemplate内部的WPF组件](/upload/InfoBanner/zyjiaocheng/667/d55aa759af994245a54c7fe40159ed10.jpg)
我在绑定到Video对象的ObservableCollection的DataTemplate中有几个UI元素.当我单击相应UI元素的ContextMenuItem [测试]时,我想调用Video对象的方法.
这是我的XAML:
<ItemsControl Name="VideoUIElment" >
<ItemsControl.ItemTemplate>
<DataTemplate x:Uid="videoTemplate">
<Border CornerRadius="10" Padding="10, 10" Background="Silver" >
<TextBlock Name="label" Text="{Binding Name}" FontSize="30" Foreground="Black" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="[TEST]" Name="Test" Click="Test_Click"/>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这是集合:
public MainWindow()
{
//ctor
InitializeComponent();
pathToLauncher = string.Empty;
videos = new ObservableCollection<Video>();
VideoUIElment.ItemsSource = videos;
}
我知道,要执行此操作,我必须确定集合中的哪个Video对象绑定到我单击的特定UI元素,我可以想出一些技巧来实现此目的,但是我想在一个优美而智能的方式.
我已经看到了一些建议,但似乎其中没有一个适用.我想这应该很容易,但是我对WPF并不十分了解.
解决方法:
尝试这个:
主窗口:
public partial class MainWindow : Window
{
ObservableCollection<Video> videos { get; set; }
public MainWindow()
{
InitializeComponent();
videos = new ObservableCollection<Video>
{
new Video {Name = "Video 1"},
new Video {Name = "Video 2"},
new Video {Name = "Video 3"}
};
VideoUIElment.ItemsSource = videos;
}
private void Test_Click(object sender, RoutedEventArgs e)
{
MenuItem item = (MenuItem)sender;
Video video = (Video)item.DataContext;
MessageBox.Show(video.VideoMethod());
}
}
视频:
public class Video
{
public string Name { get; set; }
public string VideoMethod()
{
return string.Format(" Clicked {0}", Name);
}
}
内容总结
以上是互联网集市为您收集整理的c#-使用数据绑定访问DataTemplate内部的WPF组件全部内容,希望文章能够帮你解决c#-使用数据绑定访问DataTemplate内部的WPF组件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。