我有这个XAML,它从ItemSource是一个Enum的组合框中选择一个值。我使用的教程是:
http://www.c-sharpcorner.com/uploadfile/dpatra/combobox-in-datagrid-in-wpf/
<DataGrid x:Name="dgProductItem"
ItemsSource="{Binding ProductVersion.ProductItems}"
<DataGridTemplateColumn Header="Deployment Type" Width="120">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding DeploymentType}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Source={StaticResource DeploymentTypeEnum}}"
SelectedItem="{Binding DeploymentType}">
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
Run Code Online (Sandbox Code Playgroud)
但是,当我从一行更改值时,它将更新所有行。有人知道为什么吗?
编辑:
如果我仅更改一行,则只会更新该行,但是当我更改另一行时,我刚刚更改的那一行也会更改上一行。
干杯
我用dataGridTemplateColumn创建了一个datagrid,我不能再使用click on header进行排序了.以下是我的代码示例:
<DataGrid.Columns>
<DataGridTemplateColumn Header="action id" Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding id}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
你知道出了什么问题吗?这是因为使用了默认排序被停用的模板吗?
谢谢,
J.
这已经被问过几次不同的变化,但我无法让他们中的任何一个工作。
当在我的视图中单击复选框(在 datagridTemplateColumn.cellTemplate 中)时,我试图在我的视图模型中调用一个方法
<DataGrid ItemsSource="{Binding TransactionTypes}" AutoGenerateColumns="False" CanUserAddRows="False" x:Name="TransTypesGrid">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Command="{Binding DataContext.UpdateCommand, ElementName=TransTypesGrid}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Transaction Type" Binding="{Binding TransTypeDesc}" />
</DataGrid.Columns>
Run Code Online (Sandbox Code Playgroud)
在我的 viewModel 中
public DelegateCommand UpdateCommand { get; set; }
public myConstructor()
{
this.UpdateCommand = new DelegateCommand(Update);
}
private void Update()
{
//this stuff works, it's just not getting called when a checkbox get's (un)checked
//stuff that goes though the DataGrid's item source's IsSelected property
}
Run Code Online (Sandbox Code Playgroud) 我有以下DataGrid:
<DataGrid ItemsSource="{Binding EmployeeList}" CanUserAddRows="True" AutoGenerateColumns="False" Margin="0,0,0,90">
<DataGrid.Columns>
<DataGridTemplateColumn Header="CountryCombo2">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=DataContext.CountryList, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
DisplayMemberPath="CountryName"
SelectedItem="{Binding EmployeeCountry, Mode=TwoWay}"
SelectedValue="{Binding EmployeeCountry.CountryId}"
SelectedValuePath="CountryId" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
但是,我无法向DataGrid添加新行。如果需要提供其他代码,请告诉我。
更新:
屏幕1:这是窗口刚加载了硬编码的属性值时的屏幕截图。现在,我看到了空的新行。

屏幕2:在这里,我已将数据添加到具有Rambo和Russia值的新行中。现在,无论我做什么(跳出,单击另一个单元格),都不会添加下一个新行。我认为应该添加一个新行。

屏幕3:此处新添加的行值已消失。那是因为我双击了两个空单元格之间的细边框。现在,这很奇怪。

屏幕4:现在,当我单击Peter单元格时,先前输入的行数据返回了,但是现在将其向下推并在其之前插入了一个新的空行。这很奇怪。

谁能帮助我了解DataGrid的这种行为。
我需要将枚举绑定到DataGridTemplateColumn中的组合框,但只包含枚举所具有的一些选项.
示例:
枚举选项:
未知,一,二,三,四,所有
可绑定的:一,二,三,四
有什么办法吗?
非常感谢.
最好的祝福
我一直在努力解决这个问题一段时间,似乎无法得到任何答案.我已经模拟了一个简单的XAML文件来演示这个问题(我没有提供我真正的XAML文件,因为它有比这个问题所需的更多).
这是我的问题:给定以下XAML文件,如何在代码隐藏中获取驻留在DataGridTemplateColumn.CellEditingTemplate DataTemplate中的selectHeight ComboBox的引用?我需要引用,以便我可以根据selectAge ComboBox中的选择更改ComboBox的属性.
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid Name="grdPeople"
AutoGenerateColumns="False"
AlternatingRowBackground="LightBlue"
CanUserAddRows="True" CanUserDeleteRows="True" IsEnabled="True"
MaxHeight="400" VerticalScrollBarVisibility="Auto">
<DataGrid.Columns>
<!--Name Column-->
<DataGridTemplateColumn Header="MyName" CanUserReorder="False" CanUserResize="False" CanUserSort="False" >
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<Label Content="{Binding Path=Name}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate >
<DataTemplate>
<TextBox Text="{Binding Path=Name}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<!--Age Column-->
<DataGridTemplateColumn Header="MyAge">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=Age}"></Label>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Name="selectAge" ItemsSource="{Binding Path=AgeOpts}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Path=Age}"></Label>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<!--Height Column-->
<DataGridTemplateColumn Header="MyHeight"> …Run Code Online (Sandbox Code Playgroud) 我有一个datatemplate用于datagridtemplatecolumn
我试图在鼠标悬停在Image.
鼠标悬停时,光标在变化,但图像没有变化。
<DataTemplate x:Key="MyDataTemplate" DataType="DataRowView">
<StackPanel Orientation="Horizontal" Background="Transparent">
<Image Margin="0,0,0,0" Width="50" Height="50" Source="{Binding Converter={StaticResource SetImgToDG}}" ToolTip="{Binding}" >
<Image.Resources>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<!-- Hover image -->
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Source" Value="C:\Images\Coil3.png"/>
</Trigger>
</Style.Triggers>
</Style>
</Image.Resources>
</Image>
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
那个绑定会产生问题吗?
怎么解决??