我使用的是ListView控件而不是DataGrid我的WPF应用程序.我想给*我的宽度ListView.GridViewColumn,但每当我提供*宽度时ListView.GridViewColumn,它给我一个编译时错误.请建议我如何提供*宽度ListView.GridViewColumn,以便ListView.GridViewColumn在我最大化屏幕时自动填充额外空间.
对此的任何帮助将非常感谢.谢谢
所以我有一个WPF DataGrid,它必然会被绑定ObservableCollection.该集合通过对其成员进行验证IDataErrorInfo.如果我以某种方式编辑单元格以使其无效,然后在击中输入之前将其标记离开它,然后返回并使其有效,单元格将停止显示无效,但是,"!" 在行的头部仍将存在,并且ToolTip将引用先前的无效值.
我试图弄清楚如何让鼠标滚动在wpf窗口上工作,其中包含scrollviewer和datagrid.WPF和C#代码如下
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Border Name="DataGridBorder" BorderThickness="2" Margin="1" CornerRadius="4" BorderBrush="#FF080757">
<dg:DataGrid AutoGenerateColumns="False" Name="ValuesDataGrid"
BorderThickness="0" CanUserResizeColumns="True" FontWeight="Bold" HorizontalScrollBarVisibility="Auto"
CanUserReorderColumns="False" IsReadOnly="True" IsTextSearchEnabled="True" AlternationCount="2"
SelectionMode="Extended" GridLinesVisibility="All"
HeadersVisibility="Column" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False" CanUserSortColumns="False"
RowDetailsVisibilityMode="Collapsed" SelectedIndex="0"
RowStyle="{StaticResource CognitiDataGridRowStyle}"
>
<dg:DataGrid.Columns>
<dg:DataGridTemplateColumn Header="Title" >
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding Path=Name}" FontWeight="Normal" />
</StackPanel>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
</dg:DataGrid.Columns>
</dg:DataGrid>
</Border>
</Grid>
<Button Grid.Row="1" Height="90" >hello world</Button>
</Grid>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
并且C#代码如下
public partial class Window1 : Window
{
public …Run Code Online (Sandbox Code Playgroud) 我们可以删除每行datagrid之间的行吗?所以它看起来像listview(所以只有数据应该在两行之间没有行)
在我的.NET 3.5 WPF应用程序中,我有一个WPF DataGrid将填充500列和50行.在滚动时,或者当我DataGrid.Items.Refresh()选择行或选择行时,App的性能非常差.
实际上应用程序将花费大约20秒来更新布局.Layout_Updated()事件将在20秒后触发.
如果我将列减少到50或更少,App将会非常敏感.根据我的发现,性能与列数直接相关.
如何提高DataGrid性能?
我有一个WPF DataGrid ..
我想冻结WPF DataGrid的第一列,同时水平scrlling ..
我的代码是:
<DataGrid Name="dgQuestionTemplate" HorizontalAlignment="Left" Grid.Row="1" Width="870" HorizontalScrollBarVisibility="Auto" IsReadOnly="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding ExamDate}" Header="Date" IsReadOnly="True" Width="90" />
<DataGridTextColumn Binding="{Binding ExamName}" Header="Test Name" IsReadOnly="True" Width="195" />
<DataGridTextColumn Binding="{Binding Batch}" Header="Batch" IsReadOnly="True" Width="100" />
<DataGridTextColumn Binding="{Binding ExamTime}" Header=" Count Down [Days: hr: min: sec]" IsReadOnly="True" Width="*" />
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud) 我知道WPF datagrid有"RowEditEnding"事件,但是我需要在Row调试之后触发事件,以检查新添加的行是否重复并合并重复的行.我的datagrid将"CanUserAddRow"属性设置为True.
我正在使用EntityObservableCollection扩展ObservableCollection以使我的实体与集合同步.所以,我考虑过OnCollectionChanged事件,但是一旦用户点击新项目占位符行,就会引发"InsertItem"事件,这意味着该对象仍然是空的,我无法检查是否有重复.
反正我是否可以举起RowEditEnded活动?
谢谢...
如何在使用WPF数据网格时更改列标题的背景颜色?需要直接修改xaml吗?
我有一个DataGrid用于显示一些数据的WPF应用程序.当我运行该程序时,还有一个附加列,如下所示:
这是我在VS2010中设计时的样子
我已关闭数据网格上的AutoGenerateColumns并单独指定列(这是用户控件):
<Grid Margin="10,10,10,10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<DataGrid x:Name="EmployeeHours" AutoGenerateColumns="False" ItemsSource="{Binding EmployeeHoursLastWeek}" Width="Auto">
<DataGrid.Columns>
<DataGridTextColumn Header="PerceptionistID" Binding="{Binding PerceptionistID}" Width="100" />
<DataGridTextColumn Header="Week Of" Binding="{Binding WeekOf, StringFormat={}{0:MM/dd/yyyy}}" Width="75" />
<DataGridTextColumn Header="Regular Hours" Binding="{Binding WorkHours}" Width="100" />
<DataGridTextColumn Header="PTO Hours" Binding="{Binding PTOHours}" Width="100" />
<DataGridTextColumn Header="Holiday Hours" Binding="{Binding HolidayHours}" Width="100" />
</DataGrid.Columns>
</DataGrid>
<Button x:Name="ImportHoursButton" Content="Import Hours"
Command="{Binding ImportHoursCommand}"
Height="25" Width="100" Margin="10"
VerticalAlignment="Bottom" HorizontalAlignment="Right"
Grid.Row="1" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
我还有一个MainWindowView,它使用注入来显示视图(这是一个常规窗口):
<Window x:Class="Sidekick.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:Sidekick.ViewModel"
xmlns:vw="clr-namespace:Sidekick.View"
Title="Sidekick"> …Run Code Online (Sandbox Code Playgroud) 我正在构建一个应用程序,它使用许多ItemControls(datagrids和listviews).为了从后台线程轻松更新这些列表,我将此扩展用于ObservableCollections,它运行良好:
今天我安装了VS12(后来安装了.NET 4.5),因为我想使用为.NET 4.5编写的组件.在将我的项目升级到.NET 4.5(从4.0)之前,我的数据网格从workerthread更新时开始抛出InvalidOperationException.异常消息:
抛出此异常是因为控件'System.Windows.Controls.DataGrid Items.Count:5'的名称为'(未命名)'的生成器已收到与Items集合的当前状态不一致的CollectionChanged事件序列.检测到以下差异:累计计数4与实际计数5不同.[累计计数为(上次重置时计数+ #Adds - 自上次重置后自上次复位).
Repro代码:
XAML:
<Window x:Class="Test1.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 ItemsSource="{Binding Items, Mode=OneTime}" PresentationTraceSources.TraceLevel="High"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
码:
public partial class MainWindow : Window
{
public ExtendedObservableCollection<int> Items { get; private set; }
public MainWindow()
{
InitializeComponent();
Items = new ExtendedObservableCollection<int>();
DataContext = this;
Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Task.Factory.StartNew(() =>
{
foreach (var item in Enumerable.Range(1, 500))
{
Items.Add(item);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)