datatemplate 相关问题

数据模板是WPF的一项功能,可让您自定义数据的表示。

DataTemplate 可以通过将其绑定到具有相同数据类型的不同属性来重用吗?

我使用具有相同数据类型的多个列的 DataGrid。我想对列使用 DataGridTemplateColumn,并为 CellTemplate 定义一个 DataTemplate,为 CellEditingTemplat 定义一个 DataTemplate...

回答 1 投票 0

我在 .NET MAUI 中使用 httpClient.GetAsync 调用 Rest 服务时遇到问题

我正在尝试从.NET MAUI 调用一些Azure Restful 函数。无论我如何配置等待语句,它们似乎都不会正确地警告我的线程,以便显示我检索到的数据。

回答 1 投票 0

如何在 WinUI 中从 DataTemplate 绑定到 xaml 根对象的成员?

我尝试绑定到 DataTemplate 中我的页面的成员。 据此,应该可以将 Page 转换为我的自定义类型。 https://learn.microsoft.com/en-us/windows/uwp/xaml-platform/x-bind-markup-

回答 1 投票 0

WPF XAML DataGridTemplateColumn 分配给两个具有条件类型的 DataTemplate

在出色的 WPF 和 XAML 中挣扎,我发现了很多信息,例如这个问题, 关于如何将多个 DataTemplate 与数据类型条件一起使用,但我不知道如何将它们连接到 Data...

回答 1 投票 0

在列表框项目内有一个可用的组合框

基本上我有一个名为“Exercise”的道具抽象类。它有两个子类“Cardio”和“Strength”,它们具有不同的属性。我现在正在处理的页面的目的是允许

回答 1 投票 0

在 WPF C# 中根据数据网格中的另一个组合框过滤 DataGrid 中的组合框?

在我的示例中,我在数据网格中有3个组合框,分别显示国家、省份和地区。我如何以这种方式按国家过滤省份和按省份过滤地区

回答 1 投票 0

如何将DataGridColumn作为命令参数传递? (WPF)

我的 DataGrid 有一些具有相同模板的列。 我的 DataGrid 有一些具有相同模板的列。 <DataTemplate x:Key="ButtonCellTemplate"> <Button Content="TestButton" Command="{Binding TestCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridColumn}}" /> </DataTemplate> 它不起作用,我知道为什么。 如何将 DataGridColumn(或 DataGridColumnHeader)作为命令参数传递? 换句话说,我需要知道在 ViewModel 中从哪一列调用该命令。 如果我们不涉及在 ViewModel 中接收此类信息从根本上来说是概念上错误的问题,那么这可以实现,但方式略有不同。 您对 DataGrid 可视化树存在误解。它是 ItemsControl 的继承者。因此,每一行旨在显示源集合的一个元素。单元格放置在一行中以表示该行的一个或另一个元素 - 通常是该元素的属性之一。这样的列实际上并不存在。这些只是细胞从中接收所需数据的容器。因此,该列不是单元格的祖先,更不用说其内容了。 但是单元格具有与其所在列进行通信的属性。你可以用它。 <DataTemplate x:Key="ButtonCellTemplate"> <Button Content="TestButton" Command="{Binding TestCommand}" CommandParameter="{Binding Column, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridCell}}}"/> </DataTemplate>

回答 1 投票 0

根据列表视图中选择的内容更改控件的可见性

我有一个ListView,里面有一堆人,支持多选。我希望拥有它,以便当通过复选框选择一个人时,会出现其他控件 - 在此......

回答 1 投票 0

ListView 中的 DataTemplate(带有 VirtualizingStackPanel)导致 StackOverflow

我有一种数据类型元数据,其中包含视频或图像的文件路径。我正在尝试使用 DataTemplate 来显示该数据类型。将会有数千个这样的物体......

回答 1 投票 0

如何在DataTemplate中绑定两个不同的类属性

我正在尝试绑定 DataTemplate 中不同类的两个属性。 我正在尝试绑定 DataTemplate 中不同类的两个属性。 <DataTemplate x:Key="DemoItemTemplate" x:DataType="local:DemoInfo"> <NavigationViewItem Visibility="{Binding Visibility, Mode=TwoWay}" Content="{x:Bind Name}"/> </DataTemplate> 将此 DataType 的 DemoInfo 设置为 DataTemplate,并从 Name 更新 DemoInfo 值。 我尝试过将视图模型视为源和相对源绑定。但是 Visibility 属性绑定在 ViewModel 类中不起作用。有什么建议如何实现这一目标吗? Visibility="{Binding Visibility, Source={StaticResource viewModel}}" AFAIK,你不能在 UWP 中使用多重绑定,你可以尝试使用 Locator 什么是 ViewModelLocator,与 DataTemplates 相比,它的优点/缺点是什么? 如何在DataTemplate中绑定两个不同的类属性 如果您将 Visibility 与 StaticResource 绑定,请在页面 Resources 中声明 ViewModel 类,如下所示。 视图模型 public class ViewModel { public ViewModel() { Visibility = false; } public bool Visibility { get; set; } } Xaml <Page.Resources> <local:ViewModel x:Key="ViewModel" /> </Page.Resources> <DataTemplate x:DataType="local:Item"> <TextBlock Width="100" Height="44" Text="{x:Bind Name}" Visibility="{Binding Visibility, Source={StaticResource ViewModel}}" /> </StackPanel> </DataTemplate> 更新 如果您希望 Visibility 值在运行时动态更改,您需要为 ViewModel 类实现 INotifyPropertyChanged 接口。 public class ViewModel : INotifyPropertyChanged { public ViewModel() { Visibility = false; } private bool _visibility; public bool Visibility { get { return _visibility; } set { _visibility = value; OnPropertyChanged(); } } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged([CallerMemberName] string PropertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName)); } } 更多详情请参考深度数据绑定官方文档 我可能是错的,但我认为 Visibility 属性有一个专用枚举,其中包含 Visibility 属性的所有可能选项(Visibility Enum)。因此,您的绑定可能工作得很好,但绑定属性的 Type 需要使用 Visibility 为 System.Windows 类型。 顺便说一句,我无论如何都不会在视图模型中添加可见性属性。我认为更标准的方法是在绑定视图后面的直接代码中具有可见性DependencyProperty。

回答 3 投票 0

是否有通过实体描述生成表、Web 视图和请求处理程序的标准方法?

我的问题是我知道某些过程的描述,并想搜索一些实现这种方法的标准技术,但不知道正确的名称。简而言之,我需要“对象模板”

回答 1 投票 0

如何获取 ItemsControl Items 模板而不是 viewmodel

我正在开发一个SpiderGraph控件。此 SpiderGraph 继承自 ItemsControl,并且可以包含继承自 ContentControl 的 SpiderGraphItems。 [StyleTypedProperty(属性 = "

回答 1 投票 0


在 ComboBox DataTemplate 中获取 TextBlock 的值

我有以下 XAML: 我有以下 XAML: <ComboBox Height="23" HorizontalAlignment="Left" Grid.Row="6" Grid.Column="2" Name="cbo_team" VerticalAlignment="Top" Width="148" DataContext="{Binding ElementName=cbo_component, Path=SelectedItem}" SelectedIndex="0"> <ComboBox.ItemsSource> <Binding XPath="Teams/Team/@id" Converter="{StaticResource xmlConverter}"> <Binding.ConverterParameter> <local:XmlConverterParameter XPathTemplate="/Products/Teams/Team[{0}]" XPathCondition="@id='{0}'" /> </Binding.ConverterParameter> </Binding> </ComboBox.ItemsSource> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding XPath=@name}" /> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> 在 C# 中,我试图获取 TextBlock 中当前选定项中的 ComboBox 的值。我怎么做? 这个问题差不多,但唯一的答案没有帮助。 检查这个样本。文本块(组合框下方)显示组合框中当前选定的 xml 元素的名称属性的值。将弹出一个消息框,其中包含在可视化树中查找的相同结果。初始选择更改时查找失败。看起来组合框项目是在设置所选项目后创建的。 XAML: <Window x:Class="CBTest.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="300" Width="300"> <Window.Resources> <XmlDataProvider x:Key="UsersData" XPath="Users"> <x:XData> <Users xmlns=""> <User name="Sally" /> <User name="Lucy" /> <User name="Linus" /> <User name="Charlie" /> </Users> </x:XData> </XmlDataProvider> </Window.Resources> <StackPanel> <ComboBox Name="_comboBox" ItemsSource="{Binding Source={StaticResource UsersData},XPath=*}" SelectedIndex="0" SelectionChanged="OnComboBoxSelectionChanged"> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding XPath=@name}" Name="nameTextBlock" /> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> <!-- Below shows how to get the value of selected item directly from the data. --> <TextBlock DataContext="{Binding Path=SelectedItem, ElementName=_comboBox}" Text="{Binding XPath=@name}" /> </StackPanel> </Window> 后面的代码,展示了如何通过遍历可视化树直接获取文本: private void OnComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBox comboBox = sender as ComboBox; ComboBoxItem comboBoxItem = comboBox.ItemContainerGenerator.ContainerFromItem(comboBox.SelectedItem) as ComboBoxItem; if (comboBoxItem == null) { return; } TextBlock textBlock = FindVisualChildByName<TextBlock>(comboBoxItem, "nameTextBlock"); MessageBox.Show(textBlock.Text); } private static T FindVisualChildByName<T>(DependencyObject parent, string name) where T : DependencyObject { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++) { var child = VisualTreeHelper.GetChild(parent, i); string controlName = child.GetValue(NameProperty) as string; if (controlName == name) { return child as T; } T result = FindVisualChildByName<T>(child, name); if (result != null) return result; } return null; } 抱歉来晚了一点 :) 但以下也有效(具有讽刺意味的是和你在同一个修复中!!) TextBlock tb1 = (TextBlock)cbo_team.SelectedItem; MessageBox.Show(tb1.Text); private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ListBox ContactListBox = sender as ListBox; ListBoxItem listBoxItem = ContactListBox .ItemContainerGenerator.ContainerFromItem(ContactListBox.SelectedItem) as ListBoxItem; if (listBoxItem == null) { return; } TextBlock txtBlock = FindVisualChildByName<TextBlock>(listBoxItem, "ListTextBlock"); MessageBox.Show(txtBlock.Text); } private static T FindVisualChildByName<T>(DependencyObject parent, string name) where T : DependencyObject { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++) { var child = VisualTreeHelper.GetChild(parent, i); string controlName = child.GetValue(NameProperty) as string; if (controlName == name) { return child as T; } T result = FindVisualChildByName<T>(child, name); if (result != null) return result; } return null; } 其他人已经建议使用 SelectionChanged 事件。没有测试下面的代码,但你可以试一试。 private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e) { TextBlock tvContent = (sender as ComboBox).SelectedItem as TextBlock; string content = tvContent.Text; } private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { var comboBox = (ComboBox)sender; ComboBoxItem comboAsTextblock = (ComboBoxItem)comboBox.SelectedItem; string comboBoxItemText = comboAsTextblock.Content.ToString(); // comboBoxItemText is what you want :) }

回答 5 投票 0

如何让 AccessKey 与 NavigationView 中的 DataTemplate 一起工作

我正在使用 WinUI 3 和 WindowsAppSDK。当我使用 NavigationView 并在 NavigationViewItem 上设置 AccessKey 时,它会起作用……直到我还定义了 MenuItemTemplate。只要我们有 DataTemplate...

回答 1 投票 0

数据模板中的 WPF 文本框双向绑定不更新源

我创建了一个 ListBox,在其中我指定了一个带有 Grid 和其中两个元素(TextBlock 和 TextBox)的 DataTemplate。 ListBox 中的源是 ObservableCollection。一切都显示 fin...

回答 0 投票 0

WinUI 3 ListView Linked To Observablecollection 包含从类画布派生的图层类

我想创建一个像 photoshop 主画布这样的应用程序,它将图层画布分组, 一个列表视图,它通过每个图层的数据模板显示图层的名称和可见性按钮添加...

回答 1 投票 0

WinUI 3 链接到 Observable 集合的 ListView 包含画布

我正在开发一个 WinUI 3 应用程序,它包含一个 ListView 链接到一个包含画布的 Observablecollection,列表视图通过 DataTemplate 显示画布的名称,但是

回答 1 投票 0

自定义列和绑定

我有 DataGrid 和我的类类型的 ObservableCollection 作为数据源。我正在使用一些具有相同 DataTemplate 的 TemplateColumns,所以我想到我为该列创建类。 问题...

回答 0 投票 0

WPF数据化到一个日期时间对象列表

我有一个组合框,我想把它绑定到日期时间对象列表上,但我想以短时格式显示日期时间对象。我很确定我需要使用某种形式的数据模板, ...

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.