我在WPF中使用VSM(Visual State Manager,来自WPF工具包),我正在尝试查找状态列表.
基本上,我理解存在某些"神奇"状态 - 就像当控件被鼠标悬停时自动应用MouseOver状态,或者......聚焦时应用的聚焦状态.
这些地方有这样的清单吗?我确定有,我找不到它.
如何像C# 中的Forms DataGridView 一样在WPF DataGrid的行和列中进行迭代?
例如,如果您有 Forms DataGridView,您可以执行以下操作:
for(int i = 0; i < formsDataGrid1.Rows.Count; i++)
{
MessageBox.Show(formsDataGrid1.Rows[i].ToString());
for(int j = 0; j < formsDataGrid1.Columns.Count; j++)
MessageBox.Show(formsDataGrid1.Rows[i].Cells[j].ToString());
}
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助!
我想这样做的原因是用户将使用 DataGrid 在 DataGrid 的第二列中输入某些信息。此外,这个 DataGrid 有多行,我希望能够获取该数据并用它更新数据库。
我有下一个代码,我定义了一个名为dgQuery的WPF工具包数据网格控件; 我用数据集的信息填充了这个,然后我在dgQuery中插入了一个新的复选框列来检查/取消选中某些行,我展示了部分C#代码:
dgQuery.DataContext = dS.Tables[0];
DataGridTemplateColumn cbCol = new DataGridTemplateColumn();
cbCol.Header = "Opc";
FrameworkElementFactory factory = new FrameworkElementFactory(typeof(CheckBox));
Binding bind = new Binding("IsSelected");
bind.Mode = BindingMode.TwoWay;
factory.SetValue(CheckBox.IsCheckedProperty, bind);
DataTemplate cellTemplate = new DataTemplate();
cellTemplate.VisualTree = factory;
cbCol.CellTemplate = cellTemplate;
dgQuery.Columns.Insert(0, cbCol);
Run Code Online (Sandbox Code Playgroud)
在检查/取消选中dgQuery行的新复选框列后,我将单击一个按钮,仅将我检查的行保存到数据库中.问题是,如何开发用于读取dgQuery的所有行的循环以及让我知道哪些行具有选中/取消选中复选框的条件?请帮我举个例子.
谢谢!!
在我的项目中,我添加了WPFToolkit程序集的引用,重新启动Visual Studio,并且在我的VS ToolBox窗口中没有看到WPFToolkit组件.我做错了什么?
在一个wpf项目中,我有这个XAML代码
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
x:Class="WpfApplication1.MainWindow"
xmlns:vsm="clr-namespace:System.Windows;assembly=WPFToolkit"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<vsm:VisualStateManager.VisualStateGroups>
<vsm:VisualStateGroup x:Name="VisualStateGroup">
<vsm:VisualState x:Name="Loading">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="control" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="button" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="button1" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<VisualState x:Name="Normal">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="control" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</vsm:VisualStateGroup>
</vsm:VisualStateManager.VisualStateGroups>
<Grid x:Name="LayoutRoot">
<Grid.Resources>
<ControlTemplate x:Key="loadingAnimation">
<Image x:Name="content" Opacity="1">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing> …Run Code Online (Sandbox Code Playgroud) 如果在DataGrid中更新了值,我试图将单元格的颜色更改为黄色.
我的XAML:
<toolkit:DataGrid x:Name="TheGrid"
ItemsSource="{Binding}"
IsReadOnly="False"
CanUserAddRows="False"
CanUserResizeRows="False"
AutoGenerateColumns="False"
CanUserSortColumns="False"
SelectionUnit="CellOrRowHeader"
EnableColumnVirtualization="True"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto">
<toolkit:DataGrid.CellStyle>
<Style TargetType="{x:Type toolkit:DataGridCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsDirty}" Value="True">
<Setter Property="Background" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
</toolkit:DataGrid.CellStyle>
</toolkit:DataGrid>
Run Code Online (Sandbox Code Playgroud)
网格绑定到数组列表(显示类似于excel的值表).数组中的每个值都是一个包含IsDirty依赖项属性的自定义对象.更改值时,将设置IsDirty属性.
当我运行这个:
我希望只有更改的单元格变为黄色,无论它在哪个列中.你看到我的XAML有什么问题吗?
我是一个沉思MS工具包图表,无法弄清楚如何改变区域的颜色.我需要动态填充图表,这意味着我不知道区域图表将有多少部分.
这是我的代码.
var a = new AreaSeries
{
Title = "a",
IndependentValuePath = "Key",
DependentValuePath = "Value",
Background = Brushes.Plum
};
Run Code Online (Sandbox Code Playgroud)
我试图改变前景和背景,没有骰子.
mcChart.Series.Add(a);
a = new AreaSeries
{
Title = "b",
IndependentValuePath = "Key",
DependentValuePath = "Value",
Background = Brushes.Peru
};
mcChart.Series.Add(a);
Run Code Online (Sandbox Code Playgroud)
填写图表.
((AreaSeries)mcChart.Series[0]).ItemsSource = new[]
{
new KeyValuePair<string, int>("1", 100),
new KeyValuePair<string, int>("2", 180),
new KeyValuePair<string, int>("3", 110),
new KeyValuePair<string, int>("4", 95),
new KeyValuePair<string, int>("5", 40),
new KeyValuePair<string, int>("6", 95)
};
((AreaSeries)mcChart.Series[1]).ItemsSource = new[]
{
new KeyValuePair<string, int>("1", 150), …Run Code Online (Sandbox Code Playgroud) 我搜索并尝试了许多方法来格式化出生日期列不仅按月和日,而且还考虑到年.
我不敢相信这很难做到.
我创建了几个类型转换器,将字符串"MM/dd/yyyy"转换为DateTime,尝试转换为不带"/"字符的字符串,并转换为年份优先的字符串:"yyy/MM/dd" .最后一个实际工作,但我不能使用它,因为日期必须以"MM/dd/yyyy"格式显示.
我找不到在该列上轻松实现custon排序(ICoparable)的方法.
我还搜索了Stack Overflow和其他网站,我很惊讶我找不到答案.
非常感谢您的帮助!
这是我的一些代码:
<dg:DataGrid Grid.Row="10" Grid.ColumnSpan="3" ItemsSource="{Binding Path=Members}"
Visibility="{Binding Path=ShowMemberResults, Converter={StaticResource boolTovisConverter}}"
SelectionMode="Single" SelectionUnit="FullRow"
HorizontalAlignment="Left"
Name="MemberGrid" AutoGenerateColumns="False" IsReadOnly="True"
SelectedItem="{Binding Path=SelectedMemberItem}" MaxHeight="200">
<dg:DataGrid.Columns>
<dg:DataGridTextColumn Header="Member ID" Binding="{Binding Path=MemberID}" Width="100"/>
<dg:DataGridTextColumn Header="First Name" Binding="{Binding Path=FirstName}" Width="100"/>
<dg:DataGridTextColumn Header="Middle" Binding="{Binding Path=MiddleInitial}" Width="50"/>
<dg:DataGridTextColumn Header="Last Name" Binding="{Binding Path=LastName}" Width="100"/>
<dg:DataGridTextColumn Header="Suffix" Binding="{Binding Path=Title}" Width="50"/>
<dg:DataGridTextColumn Header="DOB" Binding="{Binding Path=DOB, Converter={StaticResource dateConverter}}" Width="80"/>
<dg:DataGridTextColumn Header="Relationship" Binding="{Binding Path=Relationship}" Width="100"/>
<dg:DataGridTextColumn Header="Group Name" Binding="{Binding Path=GroupName}" Width="225"/>
<dg:DataGridTextColumn Header="Address " Binding="{Binding Path=Addr1}" Width="180"/> …Run Code Online (Sandbox Code Playgroud) 我有一个DateTime选择器将到达时间添加到列表中,我有两个问题:
12-Jan-2012而不是12/01/12?我目前的代码不是很先进:
theVisit.ArrivalTime = DateTimePicker1.Value
Run Code Online (Sandbox Code Playgroud) 默认的LineSeries实现按固定值对数据点进行排序.这给我这样的数据奇怪的结果:

是否可以绘制一个线序列,其中在原始顺序中的点之间绘制线条?
wpftoolkit ×10
wpf ×8
c# ×6
datagrid ×4
charts ×2
datetime ×2
area ×1
datatrigger ×1
iteration ×1
sorting ×1
toolbox ×1
visibility ×1
vsm ×1
wpfdatagrid ×1