datatemplate 相关问题

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

如何在代码后面的两个数据模板之间切换

我有一个包含两个数据模板的资源字典。每个模板都有一个带有对象的堆栈面板。 根据我从其他地方获得的条件,在我的代码后面,我想嵌入其中之一

回答 1 投票 0

如何为 WPF TreeView 设置 DataTemplate 以显示列表的所有元素?

我想在 WPF 中使用 TreeView 可视化以下数据结构: 类 MyDataContext { ICollectionView 外部 {get;set;} //... } 类外层 { 字符串名称 {get;set;}

回答 3 投票 0

无法在“Node”上执行“removeChild”:要删除的节点不是该节点的子节点。使用数据表

我正在使用数据表,这是我的反应代码,每次我进行任何更新时都会出现 Failed toexecute 'removeChild' 如何修复它? 我尝试使用 ChatGPT 和 CaludeAi 但它们都不起作用......

回答 1 投票 0

在 DataTemplate 内部使用 TreeView 层次结构和 HierarchicalDataTemplate

我有一个使用 TreeView 的 WPF 应用程序,该 TreeView 内部有多个不同类型的 HierarchicalDataTemplates/DataTemplates,每个模板都包含一个具有特定

回答 1 投票 0

有没有办法在WPF中使用数据模板继承?

DataTemplate是否可以组合或继承(类似于Styles中的“BasedOn”)?有两个例子我需要它。 对于继承的类:我有一个带有几个

回答 2 投票 0

Avalonia - 根据集合值更改 DataTemplate 会引发 ArgumentOutOfRangeException

我正在学习 Avalonia,并尝试根据自定义对象的 ObservableCollection 中的属性在两个不同的 DataTemplate 之间进行 ItemsControl 切换。 我有一个 ObservableCollecti...

回答 1 投票 0

WPF - 绑定到不同 ItemSource 内的 Ancestor 可以工作,但会导致错误

我正在尝试将 DataTemplate 内标签的前景绑定到祖先,这是摘录: 视图模型代码 公共类设备概述 { 公共字符串设备名{获取; ...

回答 1 投票 0

如何通过带有 TextBox 作为 TreeViewItems 的 ListView 进行 TAB 操作?

所以我基本上有这个ListView,我想按Tab键并迭代我的TreeViewItems(最好只有我的TextBoxes) 所以我基本上有这个 ListView,我想按 Tab 并迭代我的 TreeViewItems(最好只有我的 TextBoxes) <ListView> <ListView.View> <GridView> <GridViewColumn Header="number" /> <GridViewColumn Header="Selector"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBox Text="{Binding SelectorName}"/> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView> 我看到的场景是第一次按下选项卡后,整个第一个 TreeViewItem 被选中,再次按下选项卡,第一个文本框被选中。最后,第三个选项卡从 TreeView 中移出到下一个控件,尽管还有更多的文本框我想在“标记”到下一个控件之前捕获它。 谢谢 编辑: 问题在这里得到了回答: 如何在 ListView 中通过 TextBox 进行 TAB 操作 查看KeyboardNavigation.TabNavigation附加属性 也许我遗漏了一些东西,但我找不到任何简单的方法来做到这一点,这里是你可以做什么的概述: <ListView.InputBindings> <KeyBinding Key="Tab" Command="{Binding GoToNextItem}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ListView}}" /> <KeyBinding Modifiers="Shift" Key="Tab" Command="{Binding GoToPreviousItem}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ListView}}" /> </ListView.InputBindings> <ListView.ItemContainerStyle> <Style TargetType="{x:Type ListViewItem}"> <EventSetter Event="Selected" Handler="ItemSelected" /> </Style> </ListView.ItemContainerStyle> <ListView.View> <GridView> <GridViewColumn Header="number" /> <GridViewColumn Header="Selector"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBox Name="_tb" Text="{Binding SelectorName}"/> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> 我在这里做的事情: 覆盖选项卡行为以触发命令来选择另一个项目 将事件处理程序添加到选定的事件以聚焦文本框 命名文本框,以便可以找到并聚焦它 代码: private readonly ICommand _GoToNextItem = new Command((p) => { var lv = p as ListView; if (lv.SelectedIndex == -1 || lv.SelectedIndex == lv.Items.Count - 1) { lv.SelectedIndex = 0; } else { lv.SelectedIndex++; } }); public ICommand GoToNextItem { get { return _GoToNextItem; } } private readonly ICommand _GoToPreviousItem = new Command((p) => { var lv = p as ListView; if (lv.SelectedIndex <= 0) { lv.SelectedIndex = lv.Items.Count - 1; } else { lv.SelectedIndex--; } }); public ICommand GoToPreviousItem { get { return _GoToPreviousItem; } } private void ItemSelected(object sender, RoutedEventArgs e) { var item = sender as ListBoxItem; (FindNamedChild(item, "_tb") as TextBox).Focus(); } public static object FindNamedChild(DependencyObject container, string name) { if (container is FrameworkElement) { if ((container as FrameworkElement).Name == name) return container; } var ccount = VisualTreeHelper.GetChildrenCount(container); for (int i = 0; i < ccount; i++) { var child = VisualTreeHelper.GetChild(container, i); var target = FindNamedChild(child, name); if (target != null) { return target; } } return null; } 这是非常粗略的,使用其中任何部分的风险由您自行承担。 (我认为,在不将选择带入其中的情况下,对焦也可以采用不同的方式完成) (Command类只是ICommand的通用实现,它采用在接口的Execute方法中执行的lambda) 在 GridViewColumn 和单元格模板上设置 IsTabStop="False"。现在应该只选择 选项卡更改时数据模板内的文本框。 试试这个: <ListView DataContext="List" IsTabStop="False" > <ListView.View> <GridView> <GridViewColumn Header="Name" /> <GridViewColumn Header="Selector"> <GridViewColumn.CellTemplate> <DataTemplate > <TextBox Text="{Binding Name}" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView> 我来到这里是因为我有一个包含文本框的 UserControls ListView,并且我希望能够在列表中进行选项卡导航。这里的解决方案对我来说不起作用,但是,所做的只是将 ListView 更改为 ItemsControl。 UI 现在完全按照我的预期工作,并且根本不需要对代码进行任何更改。

回答 4 投票 0

错误处理方法:'ContentTemplate'和'ContentTemplateSelector'都设置了; “ContentTemplateSelector”将被忽略

我在 WPF 中创建了一个 DataGrid,其中包含带有模板化内容的组合框列(以使用某种颜色显示嵌入式组合框中的项目)。这是实际代码: 我在 WPF 中创建了一个 DataGrid,其中包含带有模板化内容的组合框列(以使用特定颜色显示嵌入式组合框中的项目)。这是实际代码: <DataGrid x:Name="WorkerTasksDataGrid" AutoGenerateColumns="False" HorizontalGridLinesBrush="DarkGray" VerticalGridLinesBrush="DarkGray" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="6" ItemsSource="{Binding Source={StaticResource persons}}" CanUserAddRows="False" CanUserDeleteRows="False" IsReadOnly="False"> <!-- https://stackoverflow.com/a/43044022/5128696 --> <DataGrid.Columns> <DataGridTextColumn Header="Start Date" Binding="{Binding Path=StartDate, StringFormat=\{0:dd.MM.yy HH:mm:ss\}}" IsReadOnly="True" /> <DataGridTextColumn Header="End Date" Binding="{Binding Path=EndDate, StringFormat=\{0:dd.MM.yy HH:mm:ss\}}" IsReadOnly="True" /> <!-- Here will be converter with parameter --> <!-- https://stackoverflow.com/questions/5702737/how-to-pass-specific-value-to-the-converter-parameter --> <DataGridTextColumn Header="Hours" Binding="{Binding Path=CalculatedTime}" IsReadOnly="True" /> <DataGridTextColumn Header="Project" Binding="{Binding Path=Project}" /> <DataGridTextColumn Header="Task" Binding="{Binding Path=Task}" /> <DataGridTextColumn Header="Remark" Binding="{Binding Path=Remark}" /> <!-- how to use combobox in table https://stackoverflow.com/a/4996663/5128696 --> <!-- how to style combobox items: https://stackoverflow.com/a/27963452/5128696 --> <DataGridComboBoxColumn Header="Target Company, Customer, Project" x:Name="TargetCompanyCol" SelectedItemBinding="{Binding Path=TargetCompanyColored}" ItemsSource="{Binding Source={x:Static local:WorkerAndTasksVM.ChooseCompanyItemsColored}}" DisplayMemberPath="displayName" > <DataGridComboBoxColumn.EditingElementStyle> <Style TargetType="ComboBox"> <!-- 'Both ContentTemplate and ContentTemplateSelector are set' error happens when I click on Combobox https://stackoverflow.com/a/47416321/5128696 --> <Setter Property="ItemTemplate"> <Setter.Value> <DataTemplate> <Label Name="DT_ListLabel" Content="{Binding displayName}" Background="{Binding displayColor}" Margin="0"/> </DataTemplate> </Setter.Value> </Setter> </Style> </DataGridComboBoxColumn.EditingElementStyle> </DataGridComboBoxColumn> </DataGrid.Columns> <DataGrid.GroupStyle> <!-- that thing is complicated and not related to question --> </DataGrid.GroupStyle> </DataGrid> 当我单击组合框并展开项目列表时,会发生“ContentTemplate 和 ContentTemplateSelector 均已设置”错误。全文如下: System.Windows.Data 错误:25:“ContentTemplate”和“ContentTemplateSelector”均已设置; “ContentTemplateSelector”将被忽略。 ComboBoxItem:'ComboBoxItem' (名称='') 我没有在代码中指定ContentTemplateSelector! 它重复的次数等于组合框列表中的次数。我尝试在 DataTemplate (DT_ListLabel) 中的该标签内设置 ItemTemplateSelector="{x:Null}",就像我在这里看到的那样:https://stackoverflow.com/a/47416321/5128696 但它没有帮助(我没有树视图,但实际上是一个 DataGrid 和 Combobox)。用户可以在组合框中选择项目,也可以显示颜色,但我仍然收到这些错误。我该如何解决这个问题? 我设法让它发挥作用。显然,DisplayMemberPath 与 ItemTemplate 相矛盾。此问题与组合框(或任何其他控件)更相关,而不是与数据网格和组合框列相关。这个问题对我来说很有洞察力:https://stackoverflow.com/a/15656372。所以我删除了该声明。 <DataGridComboBoxColumn Header="Target Company, Customer, Project" x:Name="TargetCompanyCol" SelectedValueBinding="{Binding Path=TargetCompanyColored}" ItemsSource="{Binding Source={x:Static local:WorkerAndTasksVM.ChooseCompanyItemsColored}}" > <DataGridComboBoxColumn.EditingElementStyle> <Style TargetType="ComboBox"> <Setter Property="ItemTemplate"> <Setter.Value> <DataTemplate> <Label Name="DT_ListLabel" Content="{Binding displayName}" Background="{Binding displayColor}" Margin="0"/> </DataTemplate> </Setter.Value> </Setter> </Style> </DataGridComboBoxColumn.EditingElementStyle> </DataGridComboBoxColumn> 我还必须为保存 displayColor 和 displayName 的类定义 toString 方法

回答 1 投票 0

列表视图中的 WPF 数据绑定

我有以下 ListView,我希望将其绑定到我的视图模型中的自定义列表: 我有以下 ListView,我希望将其绑定到我的视图模型中的自定义列表: <ListView x:Name="listviewPlayers" ItemsSource="{Binding Players}" Height="200"> <ListView.View> <GridView> <GridViewColumn Width="235"> <GridViewColumn.Header> <Label Grid.Column="2" Content ="Name" Foreground="Black" FontSize="10"></Label> </GridViewColumn.Header> </GridViewColumn> <GridViewColumn Width="235"> <GridViewColumn.Header> <Label Grid.Column="1" Content ="Score" Foreground="Black" FontSize="10"></Label> </GridViewColumn.Header> </GridViewColumn> <GridViewColumn Width="235"> <GridViewColumn.Header> <Label Grid.Column="0" Content ="Games" Foreground="Black" FontSize="10"></Label> </GridViewColumn.Header> </GridViewColumn> </GridView> </ListView.View> <ListView.ItemTemplate> <DataTemplate DataType="local:MainPageViewModel"> <Grid Height="25"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Label Content="{Binding Name}" FontWeight="Bold" FontSize="10" Foreground="Black"> </Label> <Label Grid.Column="1" Content="{Binding CurrentScore}" FontSize="10" HorizontalContentAlignment="Center" Foreground="Black"> </Label> <Label Grid.Column="2" Content="{Binding GamesWon}" HorizontalContentAlignment="Center" FontSize="10" Foreground="Black"> </Label> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView> 在我的视图模型中我有玩家: public ObservableCollection<Player> Players { get { return players; } set { players = value; foreach (Player p in players) { PlayerNames.Add(p.Name); } PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Players")); } } 玩家看起来像这样: public class Player : INotifyPropertyChanged { public event PropertyChangedEventHandler? PropertyChanged; private string name = ""; public string Name { get { return name; } set { name = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Name")); } } private string currentScore = "0"; public string CurrentScore { get { return currentScore; } set { currentScore = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CurrentScore")); } } private string gamesWon = "0"; public string GamesWon { get { return gamesWon; } set { gamesWon = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("GamesWon")); } } 我的 ListView DataTemplate 绑定做错了什么?我已经在主窗口上设置了这个: d:DataContext="{d:DesignInstance Type=local:MainPageViewModel}" 此时 ListView 看起来像这样: 如有任何建议,我们将不胜感激。 谢谢, 迈克 您不得设置 ListView 的 ItemTemplate 属性。 改为设置 GridViewColumns 的 DisplayMemberBinding 属性。 <ListView x:Name="listviewPlayers" ItemsSource="{Binding Players}" Height="200"> <ListView.View> <GridView> <GridViewColumn Width="235" Header="Name" DisplayMemberBinding="{Binding Name}"/> <GridViewColumn Width="235" Header="Games" DisplayMemberBinding="{Binding CurrentScore}"/> <GridViewColumn Width="235" Header="Score" DisplayMemberBinding="{Binding GamesWon}"/> </GridView> </ListView.View> </ListView>

回答 1 投票 0

XAML:扩展器样式组框的初始切换状态不同步

扩展器的切换按钮不同步。它的样式是这样的:关闭时,箭头指向右侧,打开时指向下方。 然而,当启动应用程序时,箭头指向右侧,但是

回答 1 投票 0

XAML WPF:从 DataTemplate DataTrigger 设置 AncestorType 的背景属性

我正在将WPF与ListView一起使用(我可以使用ListBox,问题仍然相同)。 我的 ListViewItem 具有自定义样式,模型具有 DataTemplate。我想改变...的背景颜色

回答 1 投票 0

MAUI 事件命令行为命令绑定到视图模型

所以我得到了ContentPage.Resources,我在其中为BindableLayout定义了DataTemplate。我需要将此 DataTemplate 中的 Unfocused 编辑器事件绑定到我的 ViewModel 中继命令。但我不能只是这样做...

回答 1 投票 0

DataTemplate 中具有多个项目的单选按钮组

我制作了一个数据模板,它将自动生成一些问题(从我的数据视图加载)。每个问题都有四个单选按钮,我将所有四个按钮分组到 GroupName 上。 我的问题是 - 如果我有 2...

回答 2 投票 0

如何使 WPF DataGrid 显示具有绑定和 DataTemplate 的 ViewModel 集合

我只是希望显示 DataGrid 内某种列表的内容。我目前正在尝试使用 ObservableCollection<> 和 DataGrid,但这可能会改变。我如何 DataTem...

回答 2 投票 0

在Wpf中,如何在运行时修改DataTemplate?

我正在编写一个插件,该插件已加载到源不受我管理的应用程序中。通过 API,我可以获得应用程序的 AvalonDock DockingManager。我想添加一个绑定...

回答 1 投票 0

为什么按钮的 DataTemplate 内的 WPF 网格无法正确拉伸?

我有一个生成按钮的 WPF ItemsControl。这些按钮有两侧,一侧用于显示商品名称,另一侧用于显示其价格。我的问题是网格列(参见代码 b...

回答 1 投票 0

.NET MAUI:使用 XAML DataTemplate 可以自由定位图形对象吗?

我想创建一个图表(画布中具有 X 和 Y 坐标的对象)并使用 DataTemplate 定义视图。 使用经典: MV等级:A级、B级、C级 模板:DataTemplate x:...

回答 1 投票 0

.net MAUI 数据模板。父视图模型中的命令绑定

我有一个ContentView,其中包含一个CollectionView。 ... xmlns:templates="clr-namespace:PropertyManagement.Portfolio.DataTemplates" xmlns:vm="clr 命名空间:

回答 1 投票 0

WPF - 如何从 DataTemplate 为自定义用户控件设置正确的 DataContext

我正在尝试制作一个自定义用户控件(TSFloorPlanProductDispenserStockViewer)来显示错误代码和供用户交互的按钮列表。在数据模板中 (

回答 1 投票 0

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